[PHP-users 27533] Re: トラックバック送受信のサンプルコードについて

tak tak @ pokerag.jp
2005年 11月 17日 (木) 17:30:43 JST


takです。

> fputs($sock, "POST ".$tburl." HTTP/1.1\r\n");
> fputs($sock, "Content-type: application/x-www-form-urlencoded\r\n");
> fputs($sock, "$data\r\n");

トラバの仕様は詳しくないため他にお任せするとして、
上記ソースだけ見ると、HTTP POSTリクエストに文法エラーがあります。

※上記のソースだと、タイムアウトまでrecv(fgets)待ちになるか、
 400 Bad Request を受信するかのいずれかでしょう。

(文法エラー内容)
1.Hostヘッダが無い。
   ⇒ 通信先のURLからホスト名を抜き出して
     "Host: [ホスト名]\r\n"のヘッダを追加。
2.Content-Lengthヘッダが無い。
   ⇒ $dataの長さをヘッダ値として、
     "Content-Length: [データ長]\r\n"のヘッダを追加。
3.最終ヘッダの終端がCRLF2個になっていない。
   ⇒ 上記ソースで言う所の、Content-Typeヘッダの終端を\r\n\r\nにする。

おまけとして、データ終端($dataの後)のCRLFは不要かも。


PHP-users メーリングリストの案内