2012-05-03 12 views
2

は、まあ、私は、C++でのcURLでの要求を行うために、デフォルトのInternet Explorerの接続のプロキシ設定を使用したい、これが私のサンプルコードです:C++でのcURLライブラリの要求でInternet Explorerのプロキシの設定 - Windowsの

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に渡すにはどうすればよいですか?

ありがとうございます。

答えて

2

The WinHttpGetIEProxyConfigForCurrentUser function retrieves the Internet Explorer proxy configuration for the current user.

#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 
0

まず、カールにプロキシを設定するcurl_easy_setoptを使用し、その後、プロキシサーバーを取得するには、Windows APIを使用しています。

プロキシを取得: WinHttpGetIEProxyConfigForCurrentUserこのapiはプロキシを取得できますが、WPADは取得できません。誰かが使う「自動プロキシ設定を使用する」場合と、MSDNでproxy.Allを取得するためにWinHttpGetProxyForUrl APIを使用する必要があります。curl_easy_setopt(hCurl, CURLOPT_PROXY, astrProxy.c_str());

http://msdn.microsoft.com/en-us/library/windows/desktop/aa384096(v=vs.85).aspx

は、プロキシを設定します

関連する問題