1

CURL のヘッダーに問題があります。スクリプトには 2 つの部分があります。1 つ目は認証、2 つ目はリクエストです。最初の部分はうまく機能しています。結果コードと ID を取得しています。2 つ目の部分で設定しましたそのIDでヘッダーをアップしてヘッダーで送信しますが、このエラーが発生します(< HTTP / 1.1 401 Unauthorized)が、Firefox(ModifyHeaders)のアドオンを使用してみましたが、応答(Iこのソフトウェアに ID を設定し、URL で WS にアクセスします)、何が起こっているのか、どうすれば修正できるのかわかりません。コードは次のとおりです。

$postargs = array('username' => 'user', 'password' => 'pass', 'key' => '1234567890');
$postargs = json_encode($postargs);

$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json; charset=utf-8","Accept:application/json, text/javascript, */*; q=0.01"));
curl_setopt($ch, CURLOPT_POSTFIELDS, $postargs);
curl_setopt($ch, CURLOPT_URL, "https://ws.com/login");
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 0);

curl_setopt($ch, CURLOPT_VERBOSE, TRUE);
$fh = fopen('curl_debug.txt', 'w');
curl_setopt($ch, CURLOPT_STDERR, $fh);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);            
$response = curl_exec($ch);
$a = json_decode($response);
echo $a->result;
curl_close($ch);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://ws.com/data");
curl_setopt($ch, CURLOPT_HTTPHEADER, array("id : $a->result","dataRequest : name","Content-Type: application/json; charset=utf-8","Accept:application/json, text/javascript, */*; q=0.01"));
curl_setopt($ch, CURLOPT_VERBOSE, TRUE);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 0);
$fh2 = fopen('curl_debug2.txt', 'w');
curl_setopt($ch, CURLOPT_STDERR, $fh2);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
$response2 = curl_exec($ch); 

スクリプトの何が問題になっていますか? ヘッダー (この場合は id) がスクリプトではなく、ModifyHeaders で行われるのはなぜですか?

前もって感謝します。

4

1 に答える 1

1

2 番目の要求は、認証された curl 接続を閉じて新しい接続を初期化した後の GET 要求です。これは完全に新しい未認証のリクエストです。POST のように認証配列を渡さない。

これを見てください: curl 接続で複数のリクエストを行うことはできますか?

于 2012-10-16T14:14:54.990 に答える