httpメッセージを次のように送信する場合:
res= curl_easy_perform(curl);
httpメッセージが間違ったログインまたはパスワードで送信された場合にlibcurから認証の失敗を検出するにはどうすればよいですか?
の値をres
成功と失敗の両方で確認したところ、=から0であることがわかりました。
curl_easy_perform
0
リクエストが正常に処理された場合に返されます。
認証が正しくない場合、通常、401 Unauthorized HTTP 応答コードが返されます。ただし、cURL はそれをリクエスト エラーとしてカウントしません。リクエスト エラーの例は ですCURLE_URL_MALFORMAT
。これは、リクエスト URL の形式が正しくない場合に返されます。これは、リクエストがリモート サーバーに到達しなかったことを意味します。
応答コードが 400 以上の場合、CURLOPT_FAILONERROR
make を失敗させるようにアドバイスする人もいるかもしれません。ただし、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);