自动获取代理
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 );
相关文章推荐
- Linux学习之路——分区的知识点
- sql 中 order by
- 拦截PHP各种异常和错误,发生致命错误时进行报警,万事防患于未然
- 关于ABAP事件的一张图
- PHP盛宴——经常使用函数集锦
- 个人网址使用收藏
- 新春特惠,全场7折
- Linux SSH 失败问题
- Mybatis拦截器介绍及分页插件
- Android 手机拍照预览图像与拍照图像
- Java注解(3)-源码级框架
- Hadoop生态上几个技术的关系与区别:hive、pig、hbase 关系与区别
- $(function(){})与window.onload=function(){}的区别
- 2015年12月16日 Oracle语句实现有则更新无则插入
- 动态获取UIWebView的真正高度
- DBCP、C3P0、Proxool 、 BoneCP开源连接池的比《转》
- 测试工作——XPath
- Windows 8.1升级至Windows 10后,启动VisualSVN Server Manager报错:提供程序无法执行所尝试的操作 (0x80041024)的解决
- 友元
- 跟我学习dubbo-ActiveMQ的安装-单节点与使用(9)