HTTP GET的VC三种方式

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

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();
}

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值