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

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. Web开发——CSS基础

    参考: 参考:http://css.doyoe.com/ 参考:http://www.w3school.com.cn/cssref/index.asp 参考:https://www.w3cschool ...

  2. Blender 使用

    教程: 1.https://www.youtube.com/watch?v=N8-mE-165b8&index=7&list=PLE885296A496C3D38 快捷键: http: ...

  3. AndroidsStudio_找Bug

    新版本不再提供Android Monitor,但在Logcat中可以找到运行日志,但在Regex中要勾选Show only... 另外设置一个控件记得加id.

  4. Python 常用的日期时间命令

    今天用到自动添加当前时间,居然把之前的知识忘了,特整理常用的日期时间命令 代码: # 获取当前时间# import time# localtime = time.localtime(time.time ...

  5. oracle中字符串与表数据拼接的用法--“||”

    测试过程中,经常需要批量删除或者插入.修改一些表数据或结构,使用手工复制.粘贴其实很麻烦,所以这是我们就可以使用拼接成sql语句的方法来实现操作数据.下面先讲讲oracle中拼接符 || 的用法,如下 ...

  6. 那些年读过的书《Java并发编程实战》二、如何设计线程安全类

    1.设计线程安全类的过程 设计线程安全类的过程就是设计对象状态并发访问下线程间的协同机制(在不破坏对象状态变量的不变性条件的前提下). (1)构建线程安全类的三个基本要素: 1)找出构成对象状态的所有 ...

  7. linux根文件系统制作,busybox启动流程分析

    分析 busybox-1.1.6 启动流程,并 制作一个小的根文件系统 源码百度云链接:https://pan.baidu.com/s/1tJhwctqj4VB4IpuKCA9m1g 提取码 :l10 ...

  8. 数据库每分钟运行监控SQL

    每1分钟运行一次,记录正在运行的SQL,监控数据 放在ReportServer库的t_WhoIsActive表中,保留最近30天的数据! USE [ReportServer] GO /****** O ...

  9. JsonDataObjects 简单实用

    下载地址https://github.com/ahausladen/JsonDataObjects Simple example var Obj: TJsonObject; begin Obj := ...

  10. 技嘉B75-D3V主板BUG

    故障:这块B75-D3V v1.2 主板一直会报内存故障. 详细情况是:一按下主机电源键~立即报“嘀嘀嘀声...”大约半分钟然后重启,不断的循环没有人为关闭电源会一直不停的循环这个现象. 因为连着遇到 ...