开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
捐赠
捐赠前请先登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
1 Star 0 Fork 0

lol/HttpClientLib

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
文件
master
分支 (1)
master
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
项目仓库所选许可证以仓库主分支所使用许可证为准
master
分支 (1)
master
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
master
分支 (1)
master
HttpClientLib
/
HttpClient.h
HttpClientLib
/
HttpClient.h
HttpClient.h 4.01 KB
一键复制 编辑 原始数据 按行查看 历史
balloonwj 提交于 2017年05月19日 10:55 +08:00 . Create HttpClient.h
/**
* WinInet封装类,可用于windows上http请求, HttpClient.h
* zhangyl 2016年07月15日 mail: balloonwj@qq.com
*/
#ifndef __HTTP_CLIENT_H__
#define __HTTP_CLIENT_H__
#include <WinInet.h>
#include <string>
#include <vector>
#pragma comment(lib, "wininet.lib")
#if defined(UNICODE) || defined(_UNICODE)
typedef std::wstring tstring;
#else
typedef std::string tstring;
#endif
// IE8 on Windows 7
#define IE8_USER_AGENT _T("Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1;Trident/4.0)")
// HTTP请求方法
enum HTTP_REQ_METHOD
{
REQ_METHOD_GET,
REQ_METHOD_POST,
};
// HTTP状态事件标识
enum HTTP_STATUS_EVENT
{
CONNECTED_EVENT,
REQUEST_OPENED_EVENT,
REQUEST_COMPLETE_EVENT,
USER_CANCEL_EVENT
};
// WinInet Http异步封装类
class CHttpClient
{
public:
CHttpClient(void);
~CHttpClient(void);
public:
BOOL OpenRequest(LPCTSTR lpszUrl, HTTP_REQ_METHOD nReqMethod = REQ_METHOD_GET); // 打开HTTP请求函数
BOOL AddReqHeaders(LPCTSTR lpHeaders); // 添加一个或多个HTTP请求头函数
BOOL SendRequest(const CHAR* lpData, DWORD dwLen); // 发送HTTP请求函数
BOOL SendRequestEx(DWORD dwLen); // 开始发送HTTP请求函数
BOOL SendReqBodyData(const CHAR* lpBuf, DWORD dwLen, DWORD& dwSendLen); // 发送HTTP请求消息体数据函数
BOOL EndSendRequest(); // 结束发送HTTP请求函数
DWORD GetRespCode(); // 获取HTTP响应码函数
tstring GetRespHeader(); // 获取全部HTTP头
tstring GetRespHeader(LPCTSTR lpszName, int nIndex = 0); // 获取HTTP头指定字段名称的值
int GetRespHeaderByInt(LPCTSTR lpszName, int nIndex = 0); // 获取HTTP头指定字段名称的值(Int)
BOOL GetRespBodyData(CHAR * lpBuf, DWORD dwLen, DWORD& dwRecvLen); // 获取HTTP响应消息体数据函数
void CloseRequest(); // 关闭HTTP请求函数
void SetConnectTimeOut(DWORD dwTimeOut); // 设置连接超时(单位:毫秒)
void SetCancalEvent(); // 设置取消事件函数
void SetProxy(LPCTSTR lpszServer, WORD nPort, LPCTSTR lpszUser = NULL, LPCTSTR lpszPwd = NULL);// 设置HTTP代理服务器
private:
// 状态回调函数
static void __stdcall StatusCallback(HINTERNET hInternet, DWORD dwContext, DWORD dwInternetStatus, LPVOIDlpStatusInfo, DWORD dwStatusInfoLen);
// 解析Url函数(协议,主机名,端口,文件路径)
BOOL ParseURL(LPCTSTR lpszUrl, LPTSTR lpszScheme, DWORD dwSchemeLength, LPTSTR lpszHostName, DWORD dwHostNameLength, WORD& nPort, LPTSTR lpszUrlPath, DWORD dwUrlPathLength);
// 等待事件函数
BOOL WaitForEvent(HTTP_STATUS_EVENT nEvent, DWORD dwTimeOut);
// 获取HTTP响应头长度
DWORD __GetRespHeaderLen();
// 获取HTTP响应头,按行保存在m_arrRespHeader数组
BOOL __GetRespHeader();
private:
HINTERNET m_hInternet; // 会话句柄
HINTERNET m_hConnect; // 连接句柄
HINTERNET m_hRequest; // 请求句柄
HANDLE m_hCompleteEvent; // 操作完成事件句柄
HANDLE m_hCancelEvent; // 外部取消事件句柄
DWORD m_dwConnectTimeOut; // 连接超时时间
DWORD m_dwContext; // 当前操作上下文
std::vector<tstring> m_arrRespHeader; // Http响应头数组
tstring m_strProxy; // 代理服务器(主机名:端口)
tstring m_strUser, m_strPwd; // 代理服务器的用户名和密码
};
#endif //!__HTTP_CLIENT_H__
Loading...
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

简介

取消

发行版

暂无发行版

贡献者

全部

语言

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/wcp_code/HttpClientLib.git
git@gitee.com:wcp_code/HttpClientLib.git
wcp_code
HttpClientLib
HttpClientLib
master
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /