Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 通过cURL使用NTLM进行代理身份验证,即使具有正确的凭据,也会返回407_C++_C_Curl_Proxy_Ntlm - Fatal编程技术网

C++ 通过cURL使用NTLM进行代理身份验证,即使具有正确的凭据,也会返回407

C++ 通过cURL使用NTLM进行代理身份验证,即使具有正确的凭据,也会返回407,c++,c,curl,proxy,ntlm,C++,C,Curl,Proxy,Ntlm,我正在尝试使用使用NTLM身份验证的代理访问服务器。 问题是,即使我提供了正确的凭据(我已经用Firefox测试过,代理、端口、用户名和密码都正确),我也会收到407(代理需要身份验证) 我尝试过使用CURLAUTH\u NTLM、CURLAUTH\u NTLM以及两者的逻辑组合,但仍然没有任何结果 我使用了最新版本的cURL(7.42.1)和最新版本的openSSL(1.0.2) 谁能告诉我我做错了什么 这是我的C/C+++代码: int _main() { CURL *hCurl;

我正在尝试使用使用NTLM身份验证的代理访问服务器。 问题是,即使我提供了正确的凭据(我已经用Firefox测试过,代理、端口、用户名和密码都正确),我也会收到407(代理需要身份验证)

我尝试过使用CURLAUTH\u NTLM、CURLAUTH\u 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;
}阅读文档。设置用于远程HTTP服务器而不是代理的凭据:

传递一个设置为位掩码的long-as参数,告诉libcurl您希望它使用哪种身份验证方法与远程服务器通话

。。。使用CURLOPT_USERPWD选项或CURLOPT_USERNAME和CURLOPT_password选项设置实际名称和密码

有关使用代理的身份验证,请参见


使用
CURLOPT\u PROXYAUTH
指定代理身份验证方法(NTLM),并使用设置代理凭据。

您是一个救生员。我已经做了好几个小时了。我不知道我是如何写httpauth而不是proxyauth的。