[PHP-users 1114] Re: http通信がうまくいかない。

竹本 靖 php-users@php.gr.jp
Wed, 8 Aug 2001 16:00:44 +0900


竹本@大阪です

あれから色々とHTTPを調べたのですが
送信しているリクエストはおかしくないようなのですが

それに、サーバー側は正常と返って来ているのですが
HTTP/1.1 201 OK になっていないところが気になっています。

POSTリクエストの送信サンプルが載っているURL等を
ご存知の方がいらっしゃいましたら情報をお願いします。

また、これじゃないのと言うことが有ればテストしてみますので
お願いします。

送信電文

POST /test.php3 HTTP/1.0
Host: order.e-logit.com
Accept: text/plain,text/html
User-Agent: php-client
Content-Type: application/x-www-form-urlencoded
Content-Length: 223

MALL_CODE%3DZZ%26SHOP_CODE%3D99998%26TRANSPORT_CODE%3D0%26RECEIVE_ZIP_CODE%3D1020073%26ORDER_WEIGHT%3D2%26DAIBIKI%3D1%26SHO_KIN%
3D15000%26TRANS_COOL%3D1%26TRANS_CHILLED%3D0%26TRANS_DATE%3D00000000%26SHOP_PASSWORD%3D00000000


以下戻りの電文

HTTP/1.1 200 OK
Date: Wed, 08 Aug 2001 06:48:30 GMT
Server: Apache
X-Powered-By: PHP/3.0.15
Connection: close
Content-Type: text/html; charset=Shift_JIS

223   <=  $CONTENT_LENGTH の値表示
Array    <= $HTTP_POST_VARS  の値表示


****************************************
ソース
****************************************
<?
function sock_send_rtn($ffp,$para)
{
 fputs($ffp,$para);
// header($par);
 print $para;
}

$s_url = "www.hoge.com";
$s_path = "/";
$s_cgi = "test.php3";

[中略]

$fp = fsockopen($s_url , 80 , &$errno , &$errstr);
if(!$fp) {
 print "$errstr ($errno) <br>\n";
} else {
 $send_cgi = urlencode($send_cgi);
 $len = strlen($send_cgi) ;

 print "Send Date <br>\n";
// リクエスト ライン
 sock_send_rtn($fp,"POST $s_path$s_cgi HTTP/1.0 \r\n");
// ジェネラル ヘッダ
 sock_send_rtn($fp,"Host: $s_url \n");
 sock_send_rtn($fp,"Accept: text/plain,text/html \n");
 sock_send_rtn($fp,"User-Agent: php-client \n");
// リクエスト ヘッダ
// エンティティヘッダ
 sock_send_rtn($fp,"Content-Type: application/x-www-form-urlencoded \n");
 sock_send_rtn($fp,"Content-Length: $len \n");
 sock_send_rtn($fp,"\r\n");
// メッセージ ボディ
 sock_send_rtn($fp,"$send_cgi ");
 sock_send_rtn($fp,"\r\n");

 print "Recive Date <br>\n";
 $p_sw = 0;
 while(!feof($fp)) {
  $buf = trim(fgets($fp,4096));
  $len = strlen($buf);
  if ($len == 0) {
   $p_sw = 1;
  }
//  if ($p_sw == 1){
   print "$buf \n";
//  }
//  print "$len = $buf = $p_sw <br>\n";
 }
 fclose($fp);
}
?>