Files
perl-examples/Writerside/topics/Http.md
2024-06-21 14:57:07 +09:00

1.5 KiB

Http Client

#!/usr/bin/perl
use warnings;
use strict;

use URI::URL;
use HTTP::Headers;
use HTTP::Request;
use LWP::UserAgent;

my $url = new URI::URL('https://www.example.com');
my $headers = new HTTP::Headers(
    'Accept' => 'text/html',
    'User-Agent' => 'Elex/1.0'
);
my $request = new HTTP::Request('GET', $url, $headers);
my $user_agent = new LWP::UserAgent;

my $response = $user_agent->request($request);
if ($response->is_success) {
    print $response->content;
} else {
    print $response->message;
}

LWP::UserAgent

my $user_agent = new LWP::UserAgent;
  • request

  • credentials

  • get_basic_credentials

  • timeout

HTTP::Request

my $request = new HTTP::Request($method, $url, $headers, $content);
  • method : GET, POST 등

  • url : 문자열 또는 URI::URL 객체

  • headers : HTTP::Headers 객체

  • content : 요청 바디

HTTP::Response

my $response = $user_agent->request($request);

서버 측에서 응답을 생성하려는 경우에는

my $response = HTTP::Response->new($status_code, $msg, $header, $content);
  • code

  • message

  • is_success

HTTP::Headers

my $headers = new HTTP::Headers(
    'name' => 'value', ...
);
  • push_header

  • remove_header

HTTP::Status

  • is_info

  • is_success

  • is_redirect

  • is_client_error

  • is_server_error

  • is_error

URI::URL

my $url = new URI::URL($url);
  • scheme

  • host

  • port

  • path

  • query

  • user

  • password

URI::Escape

  • uri_escape

  • uri_unescape