废话不多说了,直接上代码

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站点访问的更多相关文章

  1. silverlight如何通过单独部署的WCF站点访问sharepoint2013的图片库

    最近有项目silverlight通过单独部署的WCF站点访问sharepoint2013的图片库,需要做个笑脸墙效果如下: 结果开发完毕后无法在SP站点显示出来.使用VS自带的WCF工具进行测试.如下 ...

  2. apache下设置域名多站点访问及禁止apache访问80端口

    apache下设置域名多站点访问 当前系统:macOS High Sierra 域名访问配置指定端口后,不同域名只能配置不同的端口 apache配置目录: sudo vim /etc/apache2/ ...

  3. 判断站点访问的终端类型(移动端还是pc端)的方法(转)

    要了解某个网站是在移动设备上打开的还是在pc web浏览器中打开的,我们可以有以下综合的几种方式来搞定: 通过判断Request.UserAgent中的具体信息来分析判断,因为UserAgent包含了 ...

  4. Nginx+Tomcat多站点访问默认主页问题-狒狒完美解决-Q9715234

    <Engine name="Catalina" defaultHost="www.abc.com"> <Host name="www ...

  5. 平衡图片负载,提升web站点访问体验

    最近给分公司做官方网站,内网测试一切ok,发布至云端后,体验惊人——公司外网网速渣渣(十几k~几十k),更加要命的是,网站的高清图,根本就加载不出来,几秒,十几秒过去了,仍然在转圈圈,如下图... 于 ...

  6. Apache2.4+PHP7.2配置站点访问变下载

    问题描述:Apache正常工作,php-fpm正常工作,访问网址就变下载,显然是站点无法正常解析php造成的.php-fpm与apache的通信出现了问题. 解决方案: 如果php-fpm使用的是TC ...

  7. Apache 配置多站点访问「为项目分配二级域名」

    一级域名(baidu.com)也叫作顶级域名,注册一级域名是需要付费的. 而二级域名(image.baidu.com)是一级域名的延伸,所以只要购买了一级域名,二级域名是可以任意配置的. 其实(www ...

  8. f5会话保持导致站点访问故障

    1.环境: vs Service Port为443和80,vip为10.160.100.66,pool为10.160.45.42/43的8080.80的vs重新到443. 2.问题: 单独访问源站都没 ...

  9. 为什么php+apache本地站点访问超级慢

    /etc/hosts中必然有一行为127.0.0.1,作用是什么呢? 特点: (1)127.0.0.1不光是unix系统,linux也好,windows也好,都会有这个循回地址的.(2)在IP地址的规 ...

随机推荐

  1. html日历(1)

    <html> <head> <link rel="stylesheet" type="text/css" href="S ...

  2. N的N次方

    题目描述 现给你一个正整数N,请问N^N的最左边的数字是什么? 输入 输入包含多组测试数据.每组输入一个正整数N(N<=1000000). 输出 对于每组输入,输出N^N的最左边的数字. 样例输 ...

  3. UE4 多人FPS VR游戏制作笔记

    1, 2,服务器游戏流程 服务器负责驱动游戏流程.服务器的职责是在游戏开始/结束以及 actor 复制更新等情况下通知客户端转移到新地图. 主要架构部分 大多在本文的讨论范围之外,但我们可以在遇到特定 ...

  4. 用CSS实现“表格布局”

    当我们进行浮动布局时,会发现存在着非浮动元素与浮动元素的底部难以对齐的情况,这就是浮动布局的缺陷.因此,过去的前端工作者曾利用<table>以实现"表格布局".因为表格 ...

  5. salesforce零基础学习(八十一)更改标准字段的label名称(Admin)

    我们在开发中往往需要考虑国际化功能,salesforce 提供了国际化功能,在search部分搜索translate,便可以找到translate部分,从而对需要的进行translate.比如pick ...

  6. 闲聊cassandra

    原创,转载请注明出处 今天聊聊cassandra,里面用了不少分布式系统设计的经典算法比如consistent hashing, bloom filter, merkle tree, sstable, ...

  7. linkin大话面向对象--内部类

    内部类说白了就是类中有类 内部类:嵌套类 外部类:宿主类 内部类主要有以下作用:记住了3个字:多继承... 1,内部类提供了更好的封装,可以把内部类隐藏在外部类中,不允许同一个包中的其他类访问该类. ...

  8. java从文件中读取json

    wangxiaoer.json里面存放了json数据 需要依赖common-io.jar

  9. nodejs爬虫笔记(五)---利用nightmare模拟点击下一页

    目标 以腾讯滚动新闻为例,利用nightmare模拟点击下一页,爬取所有页面的信息.首先得感谢node社区godghdai的帮助,开始接触不太熟悉nightmare,感觉很高大上,自己写代码的时候问题 ...

  10. Gitlab权限管理-issue管理[六]

    标签(linux): git 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 设置好密码后登录进入管理目录 创建组 设置组名和权限 创建用户 已有四个用户了 给p ...