ホームページ >バックエンド開発 >PHPチュートリアル >httpリクエストが失敗しました
以下のコードはHTTPリクエストコードです。
2 番目のリクエストは失敗しました。何が問題だったのかを見つけるのを手伝ってください。
通常のプロセス: http リクエストを送信し、401 で応答し、検証付きで別の http リクエストを送信し、200 を返します。仕上げる。
注: コード内のアカウントとパスワードはすべてデフォルトであるため、最初に返されたデータ内のアカウントとパスワードは抽出されません。 2 番目のリクエストのアカウントとパスワードはデフォルトのデータを使用します。
function Socket_Connect_HTTP_Post($server, $port, $dir, $file, $data, $type = '') {
$send_url = str_replace("%2F", "/", rawurlencode(rawurldecode(urldecode($dir) . $file))));
$method = "POST";
$http_header_array["ALL"][] = "受け入れる: */*"; ://".$server."/";
$http_header_array["ALL"][] = "Accept-Language: en-us,zh-cn";
$http_header_array["ALL"][] = "ユーザー-エージェント: Mozilla/4.0 (互換性; MSIE 6.0; Windows NT 5.1)";
$http_header_array["ALL"][] = "接続: キープアライブ";
$http_header_array["ALL"][] = "ホスト: ".$server;
$http_header_array["ALL"][] = "urn:po-processor";
if(!empty($type)) {
$http_header_array["ALL"][] = "認証:ダイジェスト レルム = "www.fkhl.sh.cn"、ユーザー名 = "FHL3301009"、nonce = "MTM3MTc5Njg3Mjg3NjpkN2RmYmE4ZDFmMzNiZGQ0ZTAxMDJjMTNjZjI3MDQ2ZQ=="、uri = "/ipcam/soapservice"、nc = 00000001、cnon ce = 3f331ca5600006784", 応答= dc0f6160daa71c7e86416e0f1cb63d59 ", qop="auth"" }
$http_header_array["ALL"][] = "SOAPAction:http://www.liveipc.com/UserService/UserOperation"
$http_header_array["POST"; [ ] = "キャッシュ制御: キャッシュなし";
$http_header_array["POST"][] = "コンテンツ タイプ: text/xml";
$http_header_array["POST"][] = "コンテンツ長: " .strlen($data);
if (is_array($http_header_array["ALL"])) {
$http_header_str_all = implode("rn", $http_header_array["ALL"]);
}
if (is_array( $ http_header_array[$method])) {
$http_header_str_all .= "rn".implode("rn", $http_header_array[$method]);
}
$send_all = "POST ".$send_url." HTTP/1.1 rn ".$http_header_str_all."rnrn";
$send_all .= $data."rnrn";
$fp_send = fsockopen($server, $port, $errno, $errstr,30);
if ($fp_send)
{
$can_rcv = 0;
fputs($fp_send, $send_all);
while(!feof($fp_send))
{
$content_t = fgets($fp_send, 1024) ;
if ((trim($content_t) == "") && !$can_rcv)
$can_rcv = 1;
$content_t = fgets($fp_send, 1024) }
if ($can_rcv == 1 および strlen($content_t)>5)
{
$reply_str .= $content_t; }
}
$stream_status = stream_get_meta_data($fp_send)
if ($stream_status[timed_out] )
{
$reply_str = "";
}
}
return $reply_str; }
$soap_data = "
& lt; ns1: useroperation & gt;
& lt; wsrequest & gt;
& lt; 1.0.0 & LT ;/バージョン & GT;
& LT; gbk & lt;/charset & gt;
<トランザクション名トランザクション名> c7c92fc2882f41f90aad7bb6<
;
";
// SOAP が送信
// 最初の http リクエスト
$ret_str = Socket_Connect_HTTP_Post("www.liveipc.com", " 80" , "/ipcam/soapservice", "", $soap_data); // データ パケット
// 2 番目の http リクエスト
if($ret_str) {
$result = Socket_Connect_HTTP_Post("www.liveipc.com", "80", "/ipcam/soapservice", "", $soap_data, 200);
}
ディスカッションへの返信 (解決策)
この一連のコードはエディターを使用して選択できますか?そうしないと、あまりにも乱雑になってしまいます。