如何使用libcurl检测摘要身份验证失败?

时间:2012-12-07 17:19:47

标签: c libcurl

当我们发送带有以下内容的http消息时

res= curl_easy_perform(curl);

如果使用错误的登录名或密码发送http消息,如何从libcur检测身份验证失败?

我检查了成功和失败的res的值,我发现它= 0

1 个答案:

答案 0 :(得分:2)

如果请求成功完成,

curl_easy_perform将返回0

错误身份验证通常会导致401 Unauthorized HTTP响应代码。但是,cURL不会将其视为请求错误。请求错误的一个示例是CURLE_URL_MALFORMAT,如果您的请求URL格式不正确,则会返回该错误,这意味着请求甚至没有命中远程服务器。

如果响应代码大于或等于400,有些人可能会建议您使用CURLOPT_FAILONERROR使curl_easy_perform失败。但是,libcurl文档明确警告您:

  

此方法不是故障安全的,并且有时会出现非成功的响应代码,尤其是涉及身份验证时(响应代码401和407)。

检查身份验证错误的正确方法是使用curl_easy_getinfo来获取HTTP响应代码,例如:

CURLcode res = curl_easy_perform(curl);
long httpCode = 0;
curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &httpCode);