龙空技术网

实战经验:使用WinINet库访问HTTP代理服务器

漫漫开发路 197

前言:

而今看官们对“hinternet”可能比较注意,你们都想要分析一些“hinternet”的相关内容。那么小编也在网上收集了一些关于“hinternet””的相关资讯,希望朋友们能喜欢,朋友们快快来了解一下吧!

在用户使用桌面软件的时候,开发者可能会面临各种各样的网络环境。比如,用户可能在家中使用宽带直连到互联网,也可能用户在公司办公,公司因网络安全需要不直接开放外网权限,而是提供HTTP代理的方式为员工提供上网服务。

在MFC中,如何向和一台FTP或者HTTP服务器打交道,常用的库是WinINet库。该库提供了提供了一组高层API来封装底层通信协议,如FTP, HTTP等。下面就讲一讲如何使用WinINet库来实现对HTTP代理服务器的访问。

1) Http代理服务器无需身份验证

假设公司代理服务器为192.168.1.1,代理端口3128,且无需身份验证,则通过如下代码即可初始化WinINet库并指定WinINet库使用HTTP代理。

InternetOpen(_T(“Custom user agent”), INTERNET_OPEN_TYPE_PROXY, _T(“”), NULL, 0);

2) Http代理服务器需要身份验证

在上述情况1)中的代理服务器如果还需要身份验证的话,则可设定用于访问HTTP代理服务器的用户名和密码,代码如下:

InternetOpen(_T(“Custom user agent”), INTERNET_OPEN_TYPE_PROXY, _T(“”), NULL, 0);

InternetSetOption(hInternet, INTERNET_OPTION_PROXY_USERNAME, _T(“UserName”), _tcslen(_T(“UserName”));

InternetSetOption(hInternet, INTERNET_OPTION_PROXY_PASSWORD, _T(“Password”), _tcslen(_T(“Password”));

3) 有时为了方便用户,可能会提供”使用浏览器配置”的选项。在这个选项下,无需让用户手动输入代理服务器的各项配置信息,直接采用浏览器(通常是IE)的代理设置,这样用户只需在浏览器中设置是否采用代理就可以了。方法很简单,使用参数INTERNET_OPEN_TYPE_PRECONFIG即可。代码如下:

InternetOpen(_T(“Custom user agent”), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);

4) 最后一种情况,不使用手动指定HTTP代理,也不使用浏览器设置,直连互联网。使用参数INTERNET_OPEN_TYPE_DIRECT。代码如下:

InternetOpen(_T(“Custom user agent”), INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);

以上,我们实现了几种不同的接入HTTP服务器的方法。有关WinINet库的详细使用方法请参阅MSDN文档。

另外,有关INTERNET_OPTION开头的几个选项是实现代理访问的关键,具体含义请直接在MSDN中查询InternetOpen函数的描述。

标签: #hinternet