ホームページ >バックエンド開発 >PHPチュートリアル >httpリクエストが失敗しました

httpリクエストが失敗しました

WBOY
WBOYオリジナル
2016-06-23 14:13:561144ブラウズ

以下のコードは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;soap-env: body & gt;
& lt; ns1: useroperation & gt;
& lt; wsrequest & gt;
& lt; 1.0.0 & LT ;/バージョン & GT;
& LT; gbk & lt;/charset & gt;
<トランザクション名 c7c92fc2882f41f90aad7bb6<

0
123456 ; パスワードの確認>123456 shengxiumei@fkhl.sh.cn <名前
;

";

// 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);
}


ディスカッションへの返信 (解決策)

この一連のコードはエディターを使用して選択できますか?そうしないと、あまりにも乱雑になってしまいます。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。