|
펄 응용 - 제 6강 Win32::Internet 사용자 길잡이 - 계속
HTTP 함수
일반적 설명
모든 메소드는 메소드를 호출하기 전에 다음과 같은 행을 가지고 있는 것으로 가정한다:
use Win32::Internet;
$INET = new Win32::Internet();
$INET->HTTP($HTTP, "hostname", "username", "password");
다른 말로하면 $INET라는 인터넷 개체와 $HTTP라는 열려진 HTTP 세션을 가지고 있는 것으로 가정한다.
보다 자세한 정보는 new와 HTTP를 본다.
메소드
- AddHeader header, [flags]
- OpenRequest로 생성된 HTTP 요청 개체에 HTTP 요청 헤더를 추가한다. flags에 사용할 수 있는 값은 Microsoft Win32 인터넷 함수를 참조한다.
예:
$HTTP->OpenRequest($REQUEST,"/index.htm");
$REQUEST->AddHeader("If-Modified-Since: Sunday, 17-Nov-96 11:40:03 GMT");
$REQUEST->AddHeader("Accept: text/html", HTTP_ADDREQ_FLAG_REPLACE);
- OpenRequest requestobject, [path, method, version, referer, accept, flags, context]
- OpenRequest requestobject, hashref
- HTTP 요청을 연다. 오류가 발생하면 undef가 리턴되며 접속이 성공적인 경우에는 임의의 수가 리턴된다. 새로 생성된 requestobject 개체에대해 AddHeader, SendRequest, QueryInfo, QueryDataAvailable, ReadFile 메소드중 하나를 사용할 수 있다. 매개변수와 값은 다음과 같다:
| 매개변수 |
의미 |
기본값 |
| path |
요청할 개체. 이것은 일반적으로 파일명이나 실행모듈등이다. |
/ |
| method |
사용할 메소드; 사실 GET, POST, HEAD나 PUT중 하나일 것이다. |
GET |
| version |
HTTP 버전. |
HTTP/1.0 |
| referer |
현재의 URL의 링크를 제공한 URL. |
없음 |
| accept |
받아들일 수 있는 MIME 형식. 이들은 ""(ASCII "영")에의해 분리되어야 한다. |
text/* image/gif image/jpeg |
| flags |
함수의 동작에 영향을 주는 추가적인 플랙. |
없음 |
| context |
비동기 동작시 동작을 확인하기위한 번호. 비동기 동작에대한 보다 자세한 정보는 SetStatusCallback과 GetStatusCallback을 본다. |
없음 |
이들 매개변수에대한 보다 자세한 사항은 Microsoft Win32 인터넷 함수를 참조한다. 만약 hashref(연관배열 참조)을 전달한다면 다음과 같은 값들이 배열로부터 취해진다:
%hash=(
"path" => "path",
"method" => "method",
"version" => "version",
"referer" => "referer",
"accept" => "accept",
"flags" => flags,
"context" => context
);
또한 Request을 본다.
예:
$HTTP->OpenRequest($REQUEST, "/index.htm");
$HTTP->OpenRequest($REQUEST, "/index.htm", "GET", "HTTP/0.9");
$params{"path"} = "/index.htm";
$params{"flags"} = "
$HTTP->OpenRequest($REQUEST, \%params);
- QueryInfo header, [flags]
- OpenRequest로 생성된 HTTP 요청 개체에대한 정보를 질의한다. header(예: "Content-type")를 지정할 수 있으며 하나 이상의 flags을 지정할 수 있다. 만약 flags이 지정되지 않으면 HTTP_QUERY_CUSTOM가 기본적으로 사용된다. 이것은 header는 타당한 HTTP 헤더 이름을 포함해야 한다는 것을 의미한다. flags에 사용할 수 있는 값은 Microsoft Win32 인터넷 함수를 참조한다.
예:
$HTTP->OpenRequest($REQUEST,"/index.htm");
$statuscode = $REQUEST->QueryInfo("", HTTP_QUERY_STATUS_CODE);
# will get all the headers
$headers = $REQUEST->QueryInfo("", HTTP_QUERY_RAW_HEADERS_CRLF);
$length = $REQUEST->QueryInfo("Content-length");
- Request [path, method, version, referer, accept, flags]
- Request hashref
- HTTP 요청을 수행하고 상태코드, 헤더, 파일의 내용을 포함하는 배열을 리턴한다. 이 것은 OpenRequest, SendRequest를 수행하고, QueryInfo, ReadFile를 수행한 후, 마지막으로 Close로 진행되는 단계를 간략화한 절차이다. 매개변수에대한 설명은 OpenRequest을 본다.
예:
($statuscode, $headers, $file) = $HTTP->Request("/index.htm");
($s, $h, $f) = $HTTP->Request("/index.htm", "GET", "HTTP/1.0");
- SendRequest [postdata]
- HTTP 요청을 원격서버로 전송한다. postdata는 요청 헤더를 전송한 직후 전송될 추가적인 데이타이다; 이 것은 일반적으로 POST나 PUT 요청에대해 사용된다.
예:
$HTTP->OpenRequest($REQUEST, "/index.htm");
$REQUEST->SendRequest();
# A POST request...
$HTTP->OpenRequest($REQUEST, "/cgi-bin/somescript.pl", "POST");
#This line is a must -> (thanks Philip :)
$REQUEST->AddHeader("Content-Type: application/x-www-form-urlencoded");
$REQUEST->SendRequest("key1=value1&key2=value2&key3=value3");
Fatal error: Call to undefined function: articleads() in /home/hosting_users/doax/www/sections.php on line 328
| |
|