3

投稿リクエストを実行しようとしていますが、ダイジェスト認証で実行しようとしています。でlibcurl、オプションを設定します。

curl_easy_setopt(curl_handle, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);

curl_easy_setopt(curl_handle, CURLOPT_USERPWD, "username:password");

他のすべてのオプション(投稿、URL、およびすべて)を設定する前に。サーバーが接続を閉じ、ダイジェストが作成されていないと思います。ダイジェストのチャレンジ/レスポンス動作を自動的に取得する方法がわかりません。内容をエンコードするように設定HTTPAUTHするCURLAUTH_BASICと、VERBOSEオプションを使用してヘッダーに. ヘッダーなしのダイジェストあり。authorization = basic

どうすればそれができるか知っていますか、それとも例を挙げてもらえますか? 本当にあちこち探しました。

4

1 に答える 1

6

基本的なPOSTリクエストの場合、次のことを行う必要があります。

curl_easy_setopt(hnd, CURLOPT_USERPWD, "user:pwd");
curl_easy_setopt(hnd, CURLOPT_HTTPAUTH, (long)CURLAUTH_DIGEST);
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST");

マルチパートPOST(aka multipart/form-data) の場合:

struct curl_httppost *post;
struct curl_httppost *postend;
/* setup your POST body with `curl_formadd(&post, &postend, ...)` */
curl_easy_setopt(hnd, CURLOPT_USERPWD, "user:pwd");
curl_easy_setopt(hnd, CURLOPT_HTTPPOST, post);
curl_easy_setopt(hnd, CURLOPT_HTTPAUTH, (long)CURLAUTH_DIGEST);
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST");

プロのヒント: でcurlコマンドライン ツールを--libcurl request.c使用します。対応する要求を実行するために使用されるオプションのリストをこの C ファイルに出力します。

于 2013-05-29T07:50:53.950 に答える