您的位置:首页 > 其它

自动获取代理

2016-01-19 11:21 435 查看
<span style="white-space:pre">				</span>HINTERNET hHttpSession = NULL;HINTERNET hConnect     = NULL;HINTERNET hRequest     = NULL;WINHTTP_AUTOPROXY_OPTIONS  AutoProxyOptions;WINHTTP_PROXY_INFO         ProxyInfo;DWORD                      cbProxyInfoSize = sizeof(ProxyInfo);ZeroMemory( &AutoProxyOptions, sizeof(AutoProxyOptions) );ZeroMemory( &ProxyInfo, sizeof(ProxyInfo) );//// Create the WinHTTP session.//hHttpSession = WinHttpOpen( L"WinHTTP AutoProxy Sample/1.0",WINHTTP_ACCESS_TYPE_NO_PROXY,WINHTTP_NO_PROXY_NAME,WINHTTP_NO_PROXY_BYPASS,0 );// Exit if WinHttpOpen failed.if( !hHttpSession )goto Exit;////// Create the WinHTTP connect handle.//hConnect = WinHttpConnect( hHttpSession,L"www.microsoft.com",INTERNET_DEFAULT_HTTP_PORT,0 );// Exit if WinHttpConnect failed.if( !hConnect )goto Exit;//// Create the HTTP request handle.//hRequest = WinHttpOpenRequest( hConnect,L"GET",L"ms.htm",L"HTTP/1.1",WINHTTP_NO_REFERER,WINHTTP_DEFAULT_ACCEPT_TYPES,0 );// Exit if WinHttpOpenRequest failed.if( !hRequest )goto Exit;//// Set up the autoproxy call.//// Use auto-detection because the Proxy// Auto-Config URL is not known.AutoProxyOptions.dwFlags = WINHTTP_AUTOPROXY_AUTO_DETECT;// Use DHCP and DNS-based auto-detection.AutoProxyOptions.dwAutoDetectFlags =WINHTTP_AUTO_DETECT_TYPE_DHCP |WINHTTP_AUTO_DETECT_TYPE_DNS_A;// If obtaining the PAC script requires NTLM/Negotiate// authentication, then automatically supply the client// domain credentials.AutoProxyOptions.fAutoLogonIfChallenged = TRUE;//// Call WinHttpGetProxyForUrl with our target URL. If// auto-proxy succeeds, then set the proxy info on the// request handle. If auto-proxy fails, ignore the error// and attempt to send the HTTP request directly to the// target server (using the default WINHTTP_ACCESS_TYPE_NO_PROXY// configuration, which the requesthandle will inherit// from the session).//if( WinHttpGetProxyForUrl( hHttpSession,L"http://www.microsoft.com/ms.htm",&AutoProxyOptions,&ProxyInfo)){// A proxy configuration was found, set it on the// request handle.//if( !WinHttpSetOption( hRequest,//                                           WINHTTP_OPTION_PROXY,//                                           &ProxyInfo,//                                           cbProxyInfoSize ) )//{//  // Exit if setting the proxy info failed.//  goto Exit;//}}AfxMessageBox(ProxyInfo.lpszProxy);Exit://// Clean up the WINHTTP_PROXY_INFO structure.//if( ProxyInfo.lpszProxy != NULL )GlobalFree(ProxyInfo.lpszProxy);if( ProxyInfo.lpszProxyBypass != NULL )GlobalFree( ProxyInfo.lpszProxyBypass );//// Close the WinHTTP handles.//if( hRequest != NULL )WinHttpCloseHandle( hRequest );if( hConnect != NULL )WinHttpCloseHandle( hConnect );if( hHttpSession != NULL )WinHttpCloseHandle( hHttpSession );
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: