addRawPostDataはPOSTじゃなくてinput!!
HTTP_RequestとかHTTP_Client(HTTP_Requestのラッパー)とか使っちゃうわけですが、
昨日うまく動かなくて、調べてたことを纏めておこうと思います。
HTTP_Requestでデータを渡すときの方法が2通り?ありまして、
1個目のパターンが、
$request =& new HTTP_Request();
$request->setURL($uri);
$request->setMethod(HTTP_REQUEST_METHOD_POST);
$request->addPostData(“data”, $data);
$request->sendRequest();
$code = $request->getResponseCode();
$response = $request->getResponseBody();
これの場合、$dataという送りたい値は、addPostDataメソッドで送付しているので、
受け側では、$_POST($postData = $_POST; みたいに)で取れるわけですよ。
次が、
$request =& new HTTP_Request();
$request->setURL($this->_uri);
$request->setMethod(HTTP_REQUEST_METHOD_POST);
$request->addRawPostData($data,false);
$request->sendRequest();
$code = $request->getResponseCode();
$response = $request->getResponseBody();
これの場合、送りたい$dataの値は、addRawPostDataメソッドを利用しているので、
受け側では、$_POSTでは受け取ることができない!わけですよ。
この場合には、受け側で、file_get_contentsやfopenで開いて
php://inputの中身を取得する方法になるようです。
$postData = file_get_contents(“php://input”);
みたいに
知らなかったので、ごっぽり調べることになりました。。。。