[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);
}
?>