我正在尝试使用使用NTLM身份验证的代理访问服务器。问题是,即使我提供了正确的凭据(我已经使用Firefox测试了它们,并且代理,端口,用户名和密码都是正确的),我也会收到407(代理需要身份验证)。
我尝试使用CURLAUTH_NTLM,CURLAUTH_NTLM以及两者的逻辑组合,但仍然一无所获。
我正在使用最新版本的cURL(7.42.1)和最新版本的openSSL(1.0.2)。
谁能告诉我我做错了吗?
这是我的C / C +++代码:
int _main()
{
CURL *hCurl;
CURLcode curlCode;
char username[] = "domain\\user";
char password[] = "pass";
char proxy[] = "myproxy:8080";
char url[] = "http://some_random_url.com";
hCurl = curl_easy_init();
if(hCurl)
{
curl_easy_setopt(hCurl, CURLOPT_URL, url);
curlCode = curl_easy_setopt(hCurl, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
curlCode = curl_easy_setopt(hCurl, CURLOPT_PROXY, proxy);
curlCode = curl_easy_setopt(hCurl, CURLOPT_HTTPAUTH, /*CURLAUTH_BASIC | */CURLAUTH_NTLM);
curlCode = curl_easy_setopt(hCurl, CURLOPT_PROXYUSERNAME, username);
curlCode = curl_easy_setopt(hCurl, CURLOPT_PROXYPASSWORD, password);
while(true)
{
curlCode = curl_easy_perform(hCurl);
/* Check for errors */
if(curlCode != CURLE_OK)
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(curlCode));
Sleep(3000);
}
curl_easy_cleanup(hCurl);
}
getchar();
return 0;
}
阅读文档。CURLOPT_HTTPAUTH
设置用于远程HTTP服务器而不是代理的凭据:
传递一个long参数,该参数设置为位掩码,以告诉libcurl您希望它与远程服务器对话使用哪种身份验证方法。
...使用CURLOPT_USERPWD选项或CURLOPT_USERNAME和CURLOPT_PASSWORD选项设置实际名称和密码。
...
有关使用代理进行身份验证的信息,请参见
CURLOPT_PROXYAUTH
。
使用CURLOPT_PROXYAUTH
指定代理身份验证方法(NTLM),并使用CURLOPT_PROXYUSERPWD
设置代理凭据。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句