HTTP_RequestでPOSTメソッド[Pear::HTTP_Request]
Pear の HTTP_Request で POST メソッドをリクエストするには、メソッドの指定と POST するデータを指定する必要があります。
メソッドの指定は、setMethod関数で指定します。指定できるメソッドは、次のものがあります。
| メソッド | 定数 |
|---|---|
| GET | HTTP_REQUEST_METHOD_GET |
| HEAD | HTTP_REQUEST_METHOD_HEAD |
| POST | HTTP_REQUEST_METHOD_POST |
| PUT | HTTP_REQUEST_METHOD_PUT |
| DELETE | HTTP_REQUEST_METHOD_DELETE |
| OPTIONS | HTTP_REQUEST_METHOD_OPTIONS |
| TRACE | HTTP_REQUEST_METHOD_TRACE |
POST データは、 addPostData 関数で name と value(値)を指定します。
<?php
require_once "HTTP/Request.php";
$objHttp = new HTTP_Request("https://www.bnote.net/");
$objHttp->setMethod(HTTP_REQUEST_METHOD_POST);
$objHttp->addPostData("user", "bnote");
if (!PEAR::isError($objHttp->sendRequest())) {
$body = $objHttp->getResponseBody();
}
?>
Pear のマニュアルにもありますが、addPostData関数はメンバ変数に連想配列としてPOSTデータを 保存します。続けてリクエストする場合、POSTデータが残っているので注意が必要です。
POSTデータを初期化するには、clearPostData()関数を使用します。
//HTTP_Requestのメンバ関数
function addPostData($name, $value, $preencoded = false)
{
if ($preencoded) {
$this->_postData[$name] = $value;
} else {
$this->_postData[$name] = $this->_arrayMapRecursive('urlencode', $value);
}
}