준호씨의 블로그

perl - HTTP::Tiny 로 http POST request 날리기. json 데이터 사용 본문

개발이야기

perl - HTTP::Tiny 로 http POST request 날리기. json 데이터 사용

준호씨 2017. 9. 27. 00:00
반응형

 

perl - HTTP::Tiny 로 http GET request 날리기

GET 요청 날리기 GET 요청 날리기 - parameter 추가 GET 요청 날리기 - header 추가 POST 요청은 다음에... 참고 HTTP::Tiny http://search.cpan.org/~dagolden/HTTP-Tiny-0.056/lib/HTTP/Tiny.pm

junho85.pe.kr

의 후속 편. POST request 날리기입니다.

POST 요청 날리기 with json

#!/usr/bin/perl
use strict;
use warnings FATAL => 'all';

use Data::Dumper;

use HTTP::Tiny;
use JSON;

my $http = HTTP::Tiny->new();

my %headers = ();

my %data = (
    name    => "junho85",
    address => "korea"
);

my $url = "http://httpbin.org/post";
my $response = $http->post($url, {
    headers => \%headers,
    content => encode_json(\%data)
});

print $response->{content};

%data의 내용을 json으로 변경해서 body에 넣어서 POST 요청을 보냈습니다.

응답 결과는 다음과 같습니다. httpbin으로 요청을 보내면 요청 내용을 정리해서 응답으로 다시 보내줍니다.

{
  "args": {}, 
  "data": "{\"name\":\"junho85\",\"address\":\"korea\"}", 
  "files": {}, 
  "form": {}, 
  "headers": {
    "Content-Length": "36", 
    "Content-Type": "application/octet-stream", 
    "Host": "httpbin.org", 
    "User-Agent": "HTTP-Tiny/0.076", 
    "X-Amzn-Trace-Id": "Root=1-608c17e4-2384607a4f3edb2e6f6a2ec5"
  }, 
  "json": {
    "address": "korea", 
    "name": "junho85"
  }, 
  "origin": "220.78.85.67", 
  "url": "http://httpbin.org/post"
}

data에 전송했던 json정보가 들어 있는 것을 확인할 수 있습니다.

 

특이한 건 HTTP::Tiny 문서에는 post_form 함수에 대한 설명도 있는데요.  요즘은 json을 데이터로 넘기는 경우가 많아서 그냥 post를 사용했습니다.

post_form은 html의 form요청의 형태로 요청을 보낼 때 사용합니다. 다음에는 post_form을 사용하는 예제를 만들어보겠습니다.

 

perl - HTTP::Tiny 로 http POST request 날리기. form 데이터 사용

perl - HTTP::Tiny 로 http POST request 날리기. json 데이터 사용 perl - HTTP::Tiny 로 http GET request 날리기 GET 요청 날리기 GET 요청 날리기 - parameter 추가 GET 요청 날리기 - header 추가 POST 요청..

junho85.pe.kr

참고

 

 

HTTP::Tiny - A small, simple, correct HTTP/1.1 client - metacpan.org

NAME HTTP::Tiny - A small, simple, correct HTTP/1.1 client VERSION version 0.076 SYNOPSIS use HTTP::Tiny; my $response = HTTP::Tiny->new->get('http://example.com/'); die "Failed!\n" unless $response->{success}; print "$response->{status} $response->{reason

metacpan.org

 

반응형
Comments