好吧,我想使用默认的 Internet Explorer 连接代理设置在 C++ 中的 cURL 中发出请求,这是我的示例代码:
CURL *curl;
CURLcode result;
curl = curl_easy_init();
char errorBuffer[CURL_ERROR_SIZE];
if (curl)
{
// Now set up all of the curl options
curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errorBuffer);
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_HEADER, 0);
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);
curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "cookies.txt");
// Attempt to retrieve the remote page
result = curl_easy_perform(curl);
// Always cleanup
curl_easy_cleanup(curl);
}
如何检索代理 Internet Explorer 设置,然后传递给我的 cURL,以便它能够使用代理发出请求?
提前致谢。
WinHttpGetIEProxyConfigForCurrentUser 函数检索当前用户的 Internet Explorer 代理配置。 http://msdn.microsoft.com/en-us/library/windows/desktop/aa384096%28v=vs.85%29.aspx
#include "stdafx.h"
#include <Windows.h>
#include <Winhttp.h>
#include <iostream>
using namespace std;
void main()
{
WINHTTP_CURRENT_USER_IE_PROXY_CONFIG MyProxyConfig;
if(!WinHttpGetIEProxyConfigForCurrentUser(&MyProxyConfig))
{
//check the error DWORD Err = GetLastError();
DWORD Err = GetLastError();
cout << "WinHttpGetIEProxyConfigForCurrentUser failed with the following error number: " << Err << endl;
switch (Err)
{
case ERROR_FILE_NOT_FOUND:
cout << "The error is ERROR_FILE_NOT_FOUND" << endl;
break;
case ERROR_WINHTTP_INTERNAL_ERROR:
cout << "ERROR_WINHTTP_INTERNAL_ERROR" << endl;
break;
case ERROR_NOT_ENOUGH_MEMORY:
cout << "ERROR_NOT_ENOUGH_MEMORY" << endl;
break;
default: cout << "Look up error in header file." << endl;
}//end switch
}//end if
else
{
//no error so check the proxy settings and free any strings
cout << "Auto Detect is: " << MyProxyConfig.fAutoDetect << endl;
if(NULL != MyProxyConfig.lpszAutoConfigUrl)
{
wcout << "AutoConfigURL (MyProxyConfig.lpszAutoConfigUrl) is: " << MyProxyConfig.lpszAutoConfigUrl << endl;
GlobalFree(MyProxyConfig.lpszAutoConfigUrl);
}
if(NULL != MyProxyConfig.lpszProxy)
{
wcout << "AutoConfigURL (MyProxyConfig.lpszProxy) is: " << MyProxyConfig.lpszProxy << endl;
GlobalFree(MyProxyConfig.lpszProxy);
}
if(NULL != MyProxyConfig.lpszProxyBypass)
{
wcout << "AutoConfigURL (is: " << MyProxyConfig.lpszProxyBypass << endl;
GlobalFree(MyProxyConfig.lpszProxyBypass);
}
}//end else
cout << "finished!";
system("PAUSE");
}//end main
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)