一.第一种方式(包装类的方式)

a.在VC++添加类,选择typelib

b.选择文件:C:\Windows\System32\winhttp.dll

选择到右边生成的类,最后点完成,即产生了一个CWinhttpRequest类

------剩余具体步骤-----------------------------------------

//1.初始化COM组件
//2.创建组件对象指针
//3.实例化
//----------
//4.open(pHttpReq->Open(_T("GET"),_T("http://pan.baidu.com"

),Async);)
//5.send(pHttpReq->Send(vtMissing);)
//6.Response(pHttpReq->get_ResponseText())
//----------
//7.释放实例化
//8.删除对象指针
//9.卸载COM组件

//初始化COM组件
::CoInitialize(nullptr);
CWinHttpRequest *pHttpReq = new CWinHttpRequest(); BOOL bret = pHttpReq->CreateDispatch(_T("WinHttp.WinHttpRequest.5.1")/*__uuidof(WinHttpRequest)*/); if (!bret)
{
return ;
} COleVariant asyn = VARIANT_FALSE;
pHttpReq->Open(_T("GET"),_T("http://pan.baidu.com"),asyn);
pHttpReq->Send(vtMissing);
CString str = pHttpReq->get_ResponseText();
MessageBox(str);
pHttpReq->ReleaseDispatch();
delete pHttpReq;
::CoUninitialize();

二.第二种方式( import+接口方式)

接口:IWinHttpRequest

#import "C:\\Windows\\System32\\winhttp.dll"

	::CoInitialize(nullptr);
IWinHttpRequest *pHttpReq = nullptr;
HRESULT hr = CoCreateInstance(__uuidof(WinHttpRequest),nullptr,CLSCTX_ALL,__uuidof(IWinHttpRequest),(LPVOID*)&pHttpReq);
if (FAILED(hr))
{
::CoUninitialize();
return ;
} hr = pHttpReq->Open(_T("GET"),_T("https://mail.qq.com/cgi-bin/loginpage"));
if (FAILED(hr))
{
pHttpReq->Release();
::CoUninitialize();
return ;
}
hr = pHttpReq->Send();
if (FAILED(hr))
{
pHttpReq->Release();
::CoUninitialize();
return ;
} CString strText = pHttpReq->ResponseText;
MessageBox(strText); pHttpReq->Release();
::CoUninitialize();

三.第三种方式( import+智能指针包装类的方式)

::CoInitialize(nullptr);
IWinHttpRequestPtr pHttpReq = nullptr;
HRESULT hr = pHttpReq.CreateInstance(__uuidof(WinHttpRequest));
if (FAILED(hr))
{
::CoUninitialize();
return ;
}
hr = pHttpReq->Open(_T("GET"),_T("https://mail.qq.com/cgi-bin/loginpage"));
if (FAILED(hr))
{
//pHttpReq.Release();
::CoUninitialize();
return ;
}
hr = pHttpReq->Send();
if (FAILED(hr))
{
//pHttpReq.Release();
::CoUninitialize();
return ;
} CString strText = pHttpReq->ResponseText;
MessageBox(strText);
//pHttpReq.Release(); ::CoUninitialize();
}

HTTP GET的VC三种方式的更多相关文章

  1. 监视EntityFramework中的sql流转你需要知道的三种方式Log,SqlServerProfile, EFProfile

    大家在学习entityframework的时候,都知道那linq写的叫一个爽,再也不用区分不同RDMS的sql版本差异了,但是呢,高效率带来了差灵活性,我们 无法控制sql的生成策略,所以必须不要让自 ...

  2. iOS字体加载三种方式

    静态加载 动态加载 动态下载苹果提供的多种字体 其他 打印出当前所有可用的字体 检查某字体是否已经下载 这是一篇很简短的文章,介绍了 iOS 自定义字体加载的三种方式. 静态加载 这个可以说是最简单最 ...

  3. 0036 Java学习笔记-多线程-创建线程的三种方式

    创建线程 创建线程的三种方式: 继承java.lang.Thread 实现java.lang.Runnable接口 实现java.util.concurrent.Callable接口 所有的线程对象都 ...

  4. 【整理】Linux下中文检索引擎coreseek4安装,以及PHP使用sphinx的三种方式(sphinxapi,sphinx的php扩展,SphinxSe作为mysql存储引擎)

          一,软件准备 coreseek4.1 (包含coreseek测试版和mmseg最新版本,以及测试数据包[内置中文分词与搜索.单字切分.mysql数据源.python数据源.RT实时索引等测 ...

  5. JDBC的批处理操作三种方式 pstmt.addBatch()

    package lavasoft.jdbctest; import lavasoft.common.DBToolkit; import java.sql.Connection; import java ...

  6. 【Java EE 学习 52】【Spring学习第四天】【Spring与JDBC】【JdbcTemplate创建的三种方式】【Spring事务管理】【事务中使用dbutils则回滚失败!!!??】

    一.JDBC编程特点 静态代码+动态变量=JDBC编程. 静态代码:比如所有的数据库连接池 都实现了DataSource接口,都实现了Connection接口. 动态变量:用户名.密码.连接的数据库. ...

  7. Java设置session超时(失效)的三种方式

    1. 在web容器中设置(此处以tomcat为例) 在tomcat-6.0\conf\web.xml中设置,以下是tomcat 6.0中的默认配置: <!-- ================= ...

  8. angularjs 自定义服务的三种方式

    angularjs 中可通过三种($provider,$factory,$service)方式自定义服务,以下是不同的实现形式: // 定义module , module中注入$providevar ...

  9. 【转】Apache 配置虚拟主机三种方式

    Apache 配置虚拟主机三种方式  原文博客http://www.cnblogs.com/hi-bazinga/archive/2012/04/23/2466605.html 一.基于IP 1. 假 ...

随机推荐

  1. [python2] python 打印表格 prettytable

    rpm包: [root@D129 cli]# yum info python-prettytable Loaded plugins: fastestmirror Loading mirror spee ...

  2. python运算符,数据类型,数据类型操作,三目运算,深浅拷贝

    算数运算符: Py2中精确除法需要导入:from __future__ import division,(符由特  ,将来的.滴未省,除法) py3不需要导入 赋值运算符: 比较运算符: 成员运算符: ...

  3. 数据库使用:sql server/mysql/sqlite

    本科学过sql server数据库,上研刚开始在做研究时自己想点子自己做,为了简便使用了论文中看到的一个简易数据库sqlite存储使用数据.后来随着数据量的增长,以及数据处理的需求sqlite速度明显 ...

  4. MapStruct

    一.Object mapping 的技术分类: 运行期 反射调用set/get 或者是直接对成员变量赋值 . 该方式通过invoke执行赋值,实现时一般会采用beanutil, Javassist等开 ...

  5. LeetCode-860. Lemonade Change

    At a lemonade stand, each lemonade costs $5. Customers are standing in a queue to buy from you, and ...

  6. 查看进程:ps

    ps 是process status的缩写.用来查看进程 [root@linux-node- sss]# ps -aux USER PID %CPU %MEM VSZ RSS TTY STAT STA ...

  7. linux 查看网卡流量:sar

    sar(System Activity Reporter 系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,但我们一般用来监控网卡流量 # 安装 ...

  8. 自动化工具之三:pywinauto

    Python自动化工具:pywinauto 一.pywinauto的安装 (1)安装命令 pip install -U pywinauto/pip3 install -U pywinauto (2)验 ...

  9. pycharm如何设置注释的字体颜色

    一.pycharm如何设置注释的字体颜色 1.打开pycharm编辑器,file > settings > Editor > Color Scheme > python > ...

  10. js模拟队列----小优先队列

    队列:先进先出,后进后出 var Queue = (function(){ var item = new WeakMap(); class Queue{ constructor(){ item.set ...