Files
perl-examples/docs/27_http.md
2025-02-10 05:29:29 +09:00

131 lines
1.5 KiB
Markdown

# Http Client
```perl
#!/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
```perl
my $user_agent = new LWP::UserAgent;
```
- request
- credentials
- get_basic_credentials
- timeout
## HTTP::Request
```perl
my $request = new HTTP::Request($method, $url, $headers, $content);
```
- method : GET, POST 등
- url : 문자열 또는 `URI::URL` 객체
- headers : `HTTP::Headers` 객체
- content : 요청 바디
## HTTP::Response
```perl
my $response = $user_agent->request($request);
```
서버 측에서 응답을 생성하려는 경우에는
```perl
my $response = HTTP::Response->new($status_code, $msg, $header, $content);
```
- code
- message
- is_success
## HTTP::Headers
```perl
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
```perl
my $url = new URI::URL($url);
```
- scheme
- host
- port
- path
- query
- user
- password
## URI::Escape
- uri_escape
- uri_unescape