使用WinInet实现HTTP站点访问
废话不多说了,直接上代码
HTTP的GET方式代码##
void sendGetRequest(LPCTSTR lpszURL)
{
LPCTSTR lpszAgent = _T("WininetGet/0.1");
HINTERNET hInternet = NULL;
HINTERNET hConnect = NULL;
HINTERNET hRequest = NULL;
do
{
CString strServer, strObject;
DWORD dwServerType;
INTERNET_PORT nPort;
if (!AfxParseURL(lpszURL, dwServerType, strServer, strObject, nPort))
{
break;
}
hInternet = InternetOpen(lpszAgent, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
if (NULL==hInternet)
{
break;
}
LPCTSTR lpszUserName = NULL;
LPCTSTR lpszPassword = NULL;
DWORD dwConnectFlags = 0, dwConnectContext = 0;
hConnect = InternetConnect(hInternet, strServer, nPort,
lpszUserName, lpszPassword,
INTERNET_SERVICE_HTTP,
dwConnectFlags, dwConnectContext);
if (NULL==hConnect)
{
break;
}
LPCTSTR lpszVerb = _T("GET");
LPCTSTR lpszVersion = NULL;
LPCTSTR lpszReferrer = NULL;
LPCTSTR *lplpszAcceptTypes = NULL; // 允许接受所有类型
DWORD dwOpenRequestFlags = INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP |
INTERNET_FLAG_KEEP_CONNECTION |
INTERNET_FLAG_NO_AUTH |
INTERNET_FLAG_NO_COOKIES |
INTERNET_FLAG_NO_UI |
INTERNET_FLAG_IGNORE_CERT_CN_INVALID |
INTERNET_FLAG_RELOAD;
DWORD dwOpenRequestContext = 0;
hRequest = HttpOpenRequest(hConnect, lpszVerb, strObject, lpszVersion,
lpszReferrer, lplpszAcceptTypes,
dwOpenRequestFlags, dwOpenRequestContext);
if (NULL==hRequest)
{
break;
}
BOOL bResult = HttpSendRequest(hRequest, NULL, 0, NULL, 0);
if (!bResult)
{
break;
}
// 获取 HTTP应答头部信息
TCHAR szBuff[TRANSFER_SIZE];
DWORD dwReadSize = TRANSFER_SIZE;
bResult = HttpQueryInfo(hRequest, HTTP_QUERY_RAW_HEADERS, szBuff, &dwReadSize, NULL);
if (!bResult)
{
break;
}
szBuff[dwReadSize] = _T('\0');
// 获取 HTTP应答包体信息
DWORD dwByteAvailable = 0;
bResult = InternetQueryDataAvailable(hRequest, &dwByteAvailable, 0, 0);
if (!bResult)
{
break;
}
char szBody[TRANSFER_SIZE];
DWORD dwBytesRead = 0;
bResult = InternetReadFile(hRequest, szBody, dwByteAvailable, &dwBytesRead);
if (!bResult)
{
break;
}
szBody[dwBytesRead] = '\0';
TRACE(szBuff);
} while (false);
if (NULL != hRequest)
{
InternetCloseHandle(hRequest);
}
if (NULL!=hConnect)
{
InternetCloseHandle(hConnect);
}
if (NULL != hInternet)
{
InternetCloseHandle(hInternet);
}
}
使用WinInet实现HTTP站点访问的更多相关文章
- silverlight如何通过单独部署的WCF站点访问sharepoint2013的图片库
最近有项目silverlight通过单独部署的WCF站点访问sharepoint2013的图片库,需要做个笑脸墙效果如下: 结果开发完毕后无法在SP站点显示出来.使用VS自带的WCF工具进行测试.如下 ...
- apache下设置域名多站点访问及禁止apache访问80端口
apache下设置域名多站点访问 当前系统:macOS High Sierra 域名访问配置指定端口后,不同域名只能配置不同的端口 apache配置目录: sudo vim /etc/apache2/ ...
- 判断站点访问的终端类型(移动端还是pc端)的方法(转)
要了解某个网站是在移动设备上打开的还是在pc web浏览器中打开的,我们可以有以下综合的几种方式来搞定: 通过判断Request.UserAgent中的具体信息来分析判断,因为UserAgent包含了 ...
- Nginx+Tomcat多站点访问默认主页问题-狒狒完美解决-Q9715234
<Engine name="Catalina" defaultHost="www.abc.com"> <Host name="www ...
- 平衡图片负载,提升web站点访问体验
最近给分公司做官方网站,内网测试一切ok,发布至云端后,体验惊人——公司外网网速渣渣(十几k~几十k),更加要命的是,网站的高清图,根本就加载不出来,几秒,十几秒过去了,仍然在转圈圈,如下图... 于 ...
- Apache2.4+PHP7.2配置站点访问变下载
问题描述:Apache正常工作,php-fpm正常工作,访问网址就变下载,显然是站点无法正常解析php造成的.php-fpm与apache的通信出现了问题. 解决方案: 如果php-fpm使用的是TC ...
- Apache 配置多站点访问「为项目分配二级域名」
一级域名(baidu.com)也叫作顶级域名,注册一级域名是需要付费的. 而二级域名(image.baidu.com)是一级域名的延伸,所以只要购买了一级域名,二级域名是可以任意配置的. 其实(www ...
- f5会话保持导致站点访问故障
1.环境: vs Service Port为443和80,vip为10.160.100.66,pool为10.160.45.42/43的8080.80的vs重新到443. 2.问题: 单独访问源站都没 ...
- 为什么php+apache本地站点访问超级慢
/etc/hosts中必然有一行为127.0.0.1,作用是什么呢? 特点: (1)127.0.0.1不光是unix系统,linux也好,windows也好,都会有这个循回地址的.(2)在IP地址的规 ...
随机推荐
- 一步一步从原理跟我学邮件收取及发送 5.C语言的socket示例
说到 C 语言版本的程序,首先要解决的问题就是兼容性. 作为 20 年开发有 10 多年是在服务端的程序员,我深刻地感受到服务端平台的两极分化之严重,linux 派对 windows 那是超级的不屑一 ...
- spring定时任务执行两次 项目重复初始化 项目启动两次
tomcat/config/server.xml中Host标签Context节点的问题 项目里quartz定时器总是被执行2次,通过打印发现原来项目被加载了两次,所以项目下的Listener被重复加载 ...
- vue-router自动判断左右翻页转场动画
前段时间做了一个移动端spa项目,技术基于 :vue + vue-router + vuex + mint-ui 因为使用了vue-cli脚手架的webpack模版,所有页面都以.vue为后缀的文件作 ...
- phpstudy本地搭建域名访问
http://blog.csdn.net/camillezj/article/details/54694554 步骤如下: 一.hosts配置: 1.用编辑器打开hosts文件,位置:C:\Windo ...
- dedecms利用memberlist标签调用自定义会员模型的会员信息
[摘要]本文讲一下dedecms如何利用memberlist标签调用自定义会员模型的会员信息. dedecms利用memberlist标签调用自定义会员模型的会员信息,这个问题找了很久,官方论坛提问过 ...
- Python装饰器小代码
# coding=utf-8import timedef outer(fun): def inner(): start = time.time() fun() runtime = time.time( ...
- SerialChart串口示波器的成功调试
2018-01-1601:29:06 深夜更新一波串口示波器! http://t.cn/RQMA3uq 心得体会 总之将数据输出设置为","分割的形式即可 重点注意事项!!!! m ...
- Azure Powershell获取指定订阅下的虚拟机信息(ARM)
为方便Azure用户导出已创建虚拟机的相关信息,特编写如下脚本: 详情脚本: # 登陆Azure Account Add-AzureRmAccount -EnvironmentName AzureCh ...
- linux如何自动获取ip地址
第一步:激活网卡 系统装好后默认的网卡是eth0,用下面的命令将这块网卡激活. # ifconfig eth0 up 第二步:设置网卡进入系统时启动 想要每次开机就可以自动获取IP地址上网,就要设置网 ...
- ECLIPS-S测井系统下的仪器挂接 [TCC模块]
1. 环境 HPUX版本:11.23 Complete Image ECLIPS版本:Rel 5.1i 2. 效果图 3. 用途 为以后在此系统中挂接新仪器打下坚实的基础. 4. 参考资料 ECLIP ...