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

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. mysql设置指定ip访问,用户权限相关操作

    基础语法GRANT priv_type ON database.table TO user[IDENTIFIED BY [PASSWORD] 'password'] [,user [IDENTIFIE ...

  2. RHEL6.2的安装文档

    1 Installing RHEL 6.2 1.1 开始安装 选择“Install or upgrade an existing system”: 1.2 光盘检测 选择“Skip”跳过安装介质的检查 ...

  3. 如何解决selenium打开chrome提示chromedriver.exe已停止工作

    场景:启动Chrome,打开URL,提示“disconnected: unable to connect to renderer” 解决方法:chromedriver与chrome的对应关系表, 需要 ...

  4. 初识waindows窗体程序错题整理

    解析:A:Items表示集合B:获取或设置 ComboBox 的可编辑部分中选定的文本.C:SelectedIndex是索引D:获取或设置 控件中选定项的模板 解析:本题目考不同窗体之间跳转的方法,使 ...

  5. centos7 管理开机启动:systemd

    一.CentOS7 systemd 介绍 在 CentOS7 中,使用 systemd 来管理其他服务是否开机启动,systemctl 是 systemd 服务的命令行工具 [root@mysql ~ ...

  6. laravel dingo/api添加jwt-auth认证

    前面我们学了laravel dingo/api创建简单的api,这样api是开放给所有人的,如何查看和限制api的调用呢?可以用jwt-auth来验证,JSON Web Token Authentic ...

  7. composer安装其实可以很简单 两行命令就解决了

    最近接了一个cakephp项目,就想着用composer安装实施,因为Composer 可以方便地帮你安装项目中声明所依赖的外部工具库(libraries).之前没有接触过,相对比较陌生,但是相信ph ...

  8. 20165236 第六周Java学习总结

    20165236 第六周Java学习总结 一. 第八章内容: 1.String 类: String对象.常量对象:字符串并置: 常用方法: length,equals,startsWith,compa ...

  9. python基础(9)-迭代器&生成器函数&生成器进阶&推导式

    迭代器 可迭代协议和迭代器协议 可迭代协议 只要含有__iter__方法的对象都是可迭代的 迭代器协议 内部含有__next__和__iter__方法的就是迭代器 关系 1.可以被for循环的都是可迭 ...

  10. protocol error, got 'n' as reply type byte + redis如何后台启动

    其它机子的PHP访问redis爆“protocol error, got 'n' as reply type byte ”错误 解决办法: 在redis配置文件redis.conf中注释掉bind配置 ...