• 大小: 11KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-19
  • 语言: 其他
  • 标签: winhttp  vc++  post  get  

资源简介

自己封装了一个winhttp类,里面包括了获取时间戳,cookie操作。代理操作。头信息操作。返回状态码,post,get,put,图片下载,文档下载,url编码,unicode,ansi转换,utf8编码,等等操作。基本上所有的网络操作都包括了,直接可用。

资源截图

代码片段和文件信息

#include “StdAfx.h“
#include “Winhttp.h“

// const IID IID_IWinHttpRequest =
// {
//  0x016fe2ec
//  0xb2c8
//  0x45f8
//  {0xb2 0x3b 0x39 0xe5 0x3a 0x75 0x39 0x6b}
// };
// const IID IID_IWinHttpRequest =
// {
//  0x06f29373 0x5c5a 0x4b54
//  {0xb0 0x25 0x6e 0xf1 0xbf 0x8a 0xbf 0x0e}
// };
CWinhttp::CWinhttp(void)
{

CoInitializeEx(NULL COINIT_MULTITHREADED );
m_pResponseBody = NULL;
const IID IID_IWinHttpRequest =
{
0x06f29373
0x5c5a
0x4b54
{0xb0 0x25 0x6e 0xf1 0xbf 0x8a 0xbf 0x0e}
};

HRESULT hr = m_pHttpReq.CreateInstance(__uuidof(WinHttpRequest));//实例化智能指针

if (m_pHttpReq)
{
//设置为TRUE以启用Passport身份验证支持
COleVariant varTrue = VARIANT_TRUE;
m_pHttpReq->PutOption(WinHttpRequestOption_EnablePassportAuthentication varTrue);

//开启https到http之间的重定向
WinhttpEnableHttpsToHttpRedirects(true);

//使用TLS1协议
//_variant_t val = SslErrorFlag_Ignore_All;
m_pHttpReq->PutOption(WinHttpRequestOption_SslErrorIgnoreFlags SslErrorFlag_Ignore_All);
//使用TLS1协议 需要tls1.2等协议。需要注释掉这里。不在设置协议,
//COleVariant varTLS1 = (long)SecureProtocol_TLS1;
//m_pHttpReq->PutOption(WinHttpRequestOption_SecureProtocols varTLS1);
 
COleVariant varhttp = VARIANT_TRUE;
m_pHttpReq->PutOption(WinHttpRequestOption_EnableHttp1_1varhttp);

}

}

CWinhttp::~CWinhttp(void)
{
  if(m_pResponseBody)
  {
  delete [] m_pResponseBody;
  }
}

//需要访问的网址 method = GET PUT HEAD POST strurl 网址
bool CWinhttp::WinhttpOpen(CString strUrlCString strMethod__ENCODE _codelong nTimer)
{
//if( SUCCEEDED( hr ) ){...} // 如果成功
//if( FAILED( hr ) ){...} // 如果失败

//设置超时 连接超时 发送超时 接收超时
m_encode = _code ; //设置默认解码 
m_pHttpReq->SetTimeouts(0 nTimer*1000 nTimer*1000 nTimer*1000);
HRESULT hr = S_FALSE;
try
{
COleVariant varhttp = VARIANT_FALSE;
hr = m_pHttpReq->Open((LPCTSTR)strMethod (LPCTSTR)strUrlvarhttp);

if (FAILED(hr)) {
return false;
}
//插入host先
insterHostHeader(FindString(strUrl_T(“://“)_T(“/“)));
}catch (_com_error &e)
{
_bstr_t bstrErr = e.Description();
//m_strLastError = (LPCTSTR)bstrErr;
return false;
}
return true;
}

// 添加访问网址的头信息 
bool CWinhttp::WinhttpInsterHeader(CString strTypeCString strData)
{
//if( SUCCEEDED( hr ) ){...} // 如果成功
//if( FAILED( hr ) ){...} // 如果失败

HRESULT hr = S_FALSE;
try
{

hr =m_pHttpReq->SetRequestHeader((_bstr_t)strType (_bstr_t)strData);
if (FAILED(hr)) {
return false;
}
}catch (_com_error &e)
{
_bstr_t bstrErr = e.Description();
//m_strLastError = (LPCTSTR)bstrErr;
return false;
}

return true;
}

//插入新的cookies信息
bool CWinhttp::WinhttpInsterCookies(CString strData)
{
return WinhttpInsterHeader(_T(“cookie“)strData);
}

// 添加浏览器useragent信息
bool CWinhttp::WinhttpInsterUserAgent(CString strUserAgent)
{
try
{
        
m_pHttpReq->PutOption(WinHttpRequestOption_UserAgentString(_bstr_t)strUserAgent);

}c

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-10-04 12:36  winhttp\
     文件       30919  2018-09-19 16:38  winhttp\Winhttp1.cpp
     文件        5840  2018-09-13 23:54  winhttp\Winhttp1.h

评论

共有 条评论