当我们发送带有以下内容的http消息时
res= curl_easy_perform(curl);
如果使用错误的登录名或密码发送http消息,如何从libcur检测身份验证失败?
我检查了成功和失败的res
的值,我发现它= 0
答案 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);