资源简介
包装winhttp的c++类库,有vs的例子代码,经测试导入vs2015可以正常编译运行
代码片段和文件信息
#include “AsyncWinHttp.h“
AsyncWinHttp::AsyncWinHttp()
: session_(NULL)
connect_(NULL)
request_(NULL)
size_(0)
totalSize_(0)
lpBuffer_(NULL)
cb_(NULL)
response_raw_(NULL)
{
memset(memo_ 0 sizeof(memo_));
}
AsyncWinHttp::~AsyncWinHttp()
{
Cleanup();
if (response_raw_ != NULL)
{
delete response_raw_;
response_raw_ = NULL;
}
}
bool AsyncWinHttp::Initialize(ASYNC_WINHTTP_CALLBACK cb)
{
cb_ = cb;
session_ = WinHttpOpen( L“Asynchronous WinHTTP/1.0“
WINHTTP_ACCESS_TYPE_DEFAULT_PROXY
WINHTTP_NO_PROXY_NAME
WINHTTP_NO_PROXY_BYPASS
WINHTTP_FLAG_ASYNC);
return (session_ != NULL);
}
bool AsyncWinHttp::SendRequest(LPWSTR szURL)
{
WCHAR szHost[256];
DWORD dwOpenRequestFlag = 0;
URL_COMPONENTS urlComp;
bool fRet = false;
// Initialize URL_COMPONENTS structure.
ZeroMemory(&urlComp sizeof(urlComp));
urlComp.dwStructSize = sizeof(urlComp);
// Use allocated buffer to store the Host Name.
urlComp.lpszHostName = szHost;
urlComp.dwHostNameLength = sizeof(szHost) / sizeof(szHost[0]);
// Set non-zero lengths to obtain pointer a to the URL Path.
// NOTE: If we threat this pointer as a null-terminated string
// it gives us access to additional information as well.
urlComp.dwUrlPathLength = -1;
// Crack HTTP scheme.
urlComp.dwSchemeLength = -1;
// Set the szMemo string.
swprintf_s( memo_ L“WinHttpCrackURL“);
// Crack the URL.
if (!WinHttpCrackUrl(szURL 0 0 &urlComp))
{
goto cleanup;
}
// Set the szMemo string.
swprintf_s( memo_ L“WinHttpConnect“);
// Open an HTTP session.
connect_ = WinHttpConnect(session_ szHost
urlComp.nPort 0);
if (NULL == connect_)
{
goto cleanup;
}
// Prepare OpenRequest flag
dwOpenRequestFlag = (INTERNET_SCHEME_HTTPS == urlComp.nScheme) ? WINHTTP_FLAG_SECURE : 0;
// Set the szMemo string.
swprintf_s( memo_ L“WinHttpOpenRequest“);
// Open a “GET“ request.
request_ = WinHttpOpenRequest(connect_
L“GET“ urlComp.lpszUrlPath
NULL WINHTTP_NO_REFERER
WINHTTP_DEFAULT_ACCEPT_TYPES
dwOpenRequestFlag);
if (request_ == 0)
{
goto cleanup;
}
// Set the szMemo string.
swprintf_s( memo_ L“WinHttpSetStatusCallback“);
// Install the status callback function.
WINHTTP_STATUS_CALLBACK pCallback = WinHttpSetStatusCallback(request_
(WINHTTP_STATUS_CALLBACK)AsyncCallback
WINHTTP_CALLBACK_FLAG_ALL_COMPLETIONS |
WINHTTP_CALLBACK_FLAG_REDIRECT
NULL);
// note: On success WinHttpSetStatusCallback returns the previously defined callback function.
// Here it should be NULL
if (pCallback != NULL)
{
goto cleanup;
}
// Set the szMemo string.
swprintf_s( memo_ L“WinHttpSendRequest“);
// Send the request.
if (!WinHttpSendRequest(request_
WINHTTP_NO_ADDITIONAL_HEADERS 0
WINHTTP_NO_REQUEST_DATA 0 0
(DWORD_PTR)this))
{
goto cleanup;
}
fRet = true;
cleanup
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2009-12-11 15:57 winhttp_async\
目录 0 2009-12-11 15:57 winhttp_async\Debug\
文件 51200 2009-12-11 16:18 winhttp_async\Debug\winhttp_async.exe
目录 0 2009-12-11 16:18 winhttp_async\winhttp_async\
文件 11848 2009-12-11 15:31 winhttp_async\winhttp_async\AsyncWinHttp.cpp
文件 1868 2009-12-11 10:47 winhttp_async\winhttp_async\AsyncWinHttp.h
文件 1338 2009-12-10 16:20 winhttp_async\winhttp_async\ReadMe.txt
文件 300 2009-12-10 16:20 winhttp_async\winhttp_async\stdafx.cpp
文件 294 2009-12-11 15:19 winhttp_async\winhttp_async\stdafx.h
文件 830 2009-12-11 16:18 winhttp_async\winhttp_async\test.cpp
文件 4643 2009-12-11 15:57 winhttp_async\winhttp_async\winhttp_async.vcproj
文件 905 2009-12-10 16:20 winhttp_async\winhttp_async.sln
文件 23040 2009-12-11 16:18 winhttp_async\winhttp_async.suo
- 上一篇:数据结构的二叉树用C语言实现的代码
- 下一篇:基于MFC的软键盘
相关资源
- 异步网络通信 用C++
- WAV文件的读写接口类,依赖标准C++库
- C++ 跨平台 异步消息队列
- c和c++库函数快速查询资料
- VC++异步通信的socket类
- windows 64位redis2.6 API C++库和头文件
- C++下的socket异步通信源代码
- 一个完成端口模型的实现IOCP
- QT调用VS生成的C++库
- C/C++库函数参考手册中文版
- QT C++ http get、post 同步异步请求
- c++库函数查询手册.pdf
- 异步串口类
- 异步串口编程
- CC++库函数
- C++商品库存管理系统
- MFC串口异步同步通信
- C++,UDP通信类,方便实现基于消息或
- C++ 库存管理系统
- 使用IOCP完成端口和SOCKET封装的成熟异
- MFC 读写串口
- c++实用软件包(utility.h)
- C++库函数查询手册
- C++库函数
- C/C++库函数以及文件大全(经典).r
- c/c++库函数使用手册
评论
共有 条评论