私は、接続に使用するトークンを提供するAPIを使用しています。それはこれらの指示を与える。PHPカールリクエストでAuth Digestヘッダー変数を使用する
その後、このトークンは、ヘッダー変数Auth Digestのサーバーへのすべての呼び出しで送信されます。
この意味はわかりません。私はいくつかのアプローチを試し、いくつかのスタックオーバーフローの質問を読んだ。ここで私が試したことがあります。詳細については、コードコメントを参照してください。
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER,true);
curl_setopt($ch, CURLOPT_TIMEOUT, 20);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_setopt($ch, CURLOPT_VERBOSE, true);
// I have tried setting both of these
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
// In combination of the above separately, I have tried each of these individually
curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $token);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Auth Digest: ' . $token));
curl_setopt($ch, CURLOPT_POST, true);
$post_data = array('Auth Digest' => $token);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post_data));
curl_setopt($ch, CURLOPT_USERPWD, $token);
// Then I execute and close, either giving me a failed response and a response that says token is not valid
$response = curl_exec($ch);
$header_sent = curl_getinfo($ch, CURLINFO_HEADER_OUT);
if (!$response) {
echo $action . ' curl request failed';
return false;
}
curl_close($ch);
$response_json = json_decode($response);
var_dump($response_json);
ここでは、成功していない問題に私が適用しようとしたいくつかの関連するスタックオーバーフローに関する質問があります。私は、彼らがそう期待している生のHTTPヘッダまたはどのように私は、彼らがそう期待しているヘッダを生成するPHPのカールを使用することができますを知っておく必要があり
Curl request with digest auth in PHP for download Bitbucket private repository
Client part of the Digest Authentication using PHP POST to Web Service
How do I make a request using HTTP basic authentication with PHP curl?
。
通常、 '$ headers = array(" Authorization:Digest $ token ");のように見えますが、それ以上のこともあります。 APIや正確な詳細を知らなくても、私たちは推測できます。 – drew010
@ drew010が動作します。あなたが答えとして投稿できるなら、私は受け入れます。ヘッダーのすべての行を手動で設定する必要がある 'CURLOPT_HTTPHEADER'を使わずに、' curl_setopt'を使ってどのようにしたらよいかを示していただければ幸いです。 – Goose
私は答えを加えました。私はあなたのコメントを完全に理解しているのか分かりませんが、CURLOPT_HTTPHEADERを使用しても、ヘッダーのすべての行を手動で設定する必要はありません。これは、カールにオプションがない、またはより大きなコントロールを必要とする追加のヘッダーを渡すことができます。まだ他のことはすべてやっています。 – drew010