PEAR HTTP_Requestでのヘッダ送信
PEARのHTTP_Requestを使用し、
下記処理にてTEST_URL向けにPOSTとヘッダを同時に送信する処理を行いたいのですが
411 Length Requiredで返ってきてしまします。
サーバのログには
Invalid URI in request Connection: Keep-Alive
というログがerrorログに出ています。
そこでRFCを読んで見ると、
転送コーディングが施されていない場合は
Content-Length ヘッダは送られなければならないが、
メッセージボディ中のオクテット数と
正確に一致しなければならないとの記載がありました。
ここに引っかかっているのかもと思い対策しようと思いましたが
メッセージボディのlength(下記の☆部分)をどのように拾うかがわかりません。
require_once "HTTP/Request.php";
$req = &new HTTP_Request(TEST_URL,array());
$req->setURL(TEST_URL);
$req->setMethod(HTTP_REQUEST_METHOD_POST);
$req->addHeader('Host',"test.hogehoge.jp\r\n");
$req->addHeader('Content-Length',"-☆-\r\n");
$req->addHeader('Connection', "Keep-Alive\r\n");
$req->addHeader('User-Agent',"TEST ABCDEFG\r\n");
$req->addPostData('TEST_POST', 'testnano');
$result = $req->sendRequest();
if(PEAR::isError($result)) {
echo $result->getMessage();
echo "<br />";
} else {
echo $req->getResponseCode();
echo "<br />";
echo $req->getResponseBody();
echo "<br />";
}
もしかして違う原因でしょうか?
よろしくおねがいします。
お礼
色々とご回答どうもありがとうございました。 なんとか上手くいきそうな感じになってきてます。
補足
ご回答どうもありがとうございます。 何がしたいかといいますと シングルサインオンのようなものなのですが。 例えばあるサイトにいて、そこでユーザーとパスワードを保持。 クリックなどのイベントで遷移先に飛びます。 遷移先ではHTTPリクエストヘッダーに設定されているユーザーとパスワードから認証。 ここで遷移先はプログラムで既に用意されてたりするのですが、 遷移元に関してはなにもなく、 遷移元をどのように作成するかという所で悩んでます。 遷移元の機能としては、遷移先に飛んで情報を渡すという所になります。 よろしくお願いします。