0

httpメッセージを次のように送信する場合:

res= curl_easy_perform(curl);

httpメッセージが間違ったログインまたはパスワードで送信された場合にlibcurから認証の失敗を検出するにはどうすればよいですか?

の値をres成功と失敗の両方で確認したところ、=から0であることがわかりました。

4

1 に答える 1

2

curl_easy_perform0リクエストが正常に処理された場合に返されます。

認証が正しくない場合、通常、401 Unauthorized HTTP 応答コードが返されます。ただし、cURL はそれをリクエスト エラーとしてカウントしません。リクエスト エラーの例は ですCURLE_URL_MALFORMAT。これは、リクエスト URL の形式が正しくない場合に返されます。これは、リクエストがリモート サーバーに到達しなかったことを意味します。

応答コードが 400 以上の場合、CURLOPT_FAILONERRORmake を失敗させるようにアドバイスする人もいるかもしれません。ただし、libcurl のドキュメントでは、それについて明示的に警告しています。curl_easy_perform

この方法はフェイルセーフではなく、特に認証が関係している場合 (応答コード 401 および 407)、失敗した応答コードがすり抜けてしまう場合があります。

認証エラーを確認する適切な方法はcurl_easy_getinfo、HTTP 応答コードを取得するために使用することです。たとえば、次のようになります。

CURLcode res = curl_easy_perform(curl);
long httpCode = 0;
curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &httpCode);
于 2012-12-07T18:20:16.497 に答える