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

 

posted @ 2017-04-14 18:13  jadeshu  阅读(328)  评论(0编辑  收藏  举报