自动获取代理


<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 );

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值