我正在尝试访问需要使用libcurl进行身份验证的公司内部网页。运行代码时,它显示为“ 401 UNAUTHORIZED”。我通过curl_easy_setopt(curl,CURLOPT_USERPWD,“ usr:pwd”)提供了登录凭据,但仍然收到上述消息。
我继续阅读,发现401表示它需要SERVER身份验证。但是,我没有收到任何可用的身份验证方案。我的winhttp配置设置在“自动检测”上。
int wmain()
{
std::string content;
curl_global_init(CURL_GLOBAL_ALL);
CURL *curl = curl_easy_init();
if (curl)
{
curl_easy_setopt(curl, CURLOPT_URL, "company internal URL");
curl_easy_setopt(curl, CURLOPT_USERPWD, "usr:pwd");
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &content);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writer);
CURLcode code = curl_easy_perform(curl);
curl_easy_cleanup(curl);
}
curl_global_cleanup();
std::cout << content;
std::cin.get();
return 0;
}
我对使用libcurl非常陌生,并且在C / C ++方面的工作经验有限。感谢您的帮助以识别问题。谢谢!
答案 0 :(得分:1)
尝试添加curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
当然也应该替换"usr:pwd"
,但我认为您已经这样做了。
以下示例
https://curl.haxx.se/libcurl/c/CURLOPT_HTTPAUTH.html
CURL *curl = curl_easy_init();
if(curl) {
CURLcode ret;
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
/* allow whatever auth the server speaks */
curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_easy_setopt(curl, CURLOPT_USERPWD, "james:bond");
ret = curl_easy_perform(curl);
}