📄 httprequest.h
字号:
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 预处理。
#pragma once
#include <Windows.h>
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 据接收数据的通知消息。
// 其中 wParam 为 HRNOTIFY 枚举值,lParam 参看 HRNOTIFY 声明。如果此消息返回非零,将中止请求。
#define UM_HRNOTIFY (WM_USER + 0x1166)
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 错误结果枚举值。
typedef enum tagHRERROR
{
HRERROR_SUCCESS,
HRERROR_ARGUMENT,
HRERROR_SOCKET,
HRERROR_RESOLVEDNS,
HRERROR_CONNECT,
HRERROR_SEND,
HRERROR_RECEIVE,
HRERROR_CANCELED,
}
HRERROR;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 错误结果枚举值。
typedef enum tagHRNOTIFY
{
HRNOTIFY_RESOLVEDNS, // 开始解析域名,lParam 为待解析的服务器名称。
HRNOTIFY_CONNECT, // 开始连接,lParam 为待连接的服务器名称。
HRNOTIFY_SEND, // 开始发送数据,lParam 为发送的数据总字节数。
HRNOTIFY_DISCONNECT, // 断开连接,lParam 为执行结果,参看 HRERROR 枚举值。
//HRNOTIFY_RECEIVE // 除上面以外表示在接收数据,wParam 为总的字节数,lParam 为当前接收到的字节数。
}
HRNOTIFY;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 功能: 发送 HTTP/1.1 请求,并接收返回数据。
// 参数:
// pszHost [IN] HTTP 主机名称或者 IP 地址。
// [OUT] 如果是主机名称,bResolve 为非零,并且不使用代理服务器,返回解析后的 IP 地址。
// uPort [IN] HTTP 主机端口。
// pszUri [IN] 请求的 URI 名称,如“/index.htm”。
// pszHttpHost [IN] 请求的 Host 参数内容。
// pszRefer [IN] 请求的 Refer 参数内容。可以为 NULL。
// pszCookie [IN] 请求的 Cookie 参数内容。可以为 NULL。
// pbPost [IN] 请求中要 POST 的数据。如果为 NULL,将使用 HTTP GET 方式请求。
// uPost [IN] 请求中要 POST 的数据字节数。
// pbReceive [OUT] 接收数据的缓冲区。如果为 NULL,将不接收 HTTP 返回数据。
// puReceive [IN] 指定要接收数据的字节数。如果为 NULL,或者其内容小于 4,将不接收 HTTP 返回数据。
// [OUT] 如果函数执行成功,将返回接收到的数据字节数。
// pszProxy [IN] 代理服务器名称或者 IP 地址。如果为 NULL 或者 pszProxy[0] 为 0,将不使用代理服务器。
// [OUT] 如果是代理服务器名称,bResolve 为非零,并且使用代理服务器,返回解析后的 IP 地址。
// uProxy [IN] 代理服务器的端口。
// bResolve [IN] 指定是否要修改主机或代理服务器名称为解析后的 IP 地址。
// hNotify [IN] 接收 UM_HRNOTIFY 消息的窗口句柄或者 WNDPROC 类型的回调函数地址。可以为 NULL。
//
// 返回: 返回 HRERROR 枚举值,表明执行结果。其中 HRERROR_SUCCESS 表示执行成功,其它表示执行失败。
// 备注: 调用此函数之前请调用 WSAStartup() 初始化 Windows Socket。
#ifdef __cplusplus
HRERROR WINAPI HttpRequest(LPSTR pszHost, USHORT uPort, LPCSTR pszUri,
LPSTR pszHttpHost, LPCSTR pszRefer = NULL, LPCSTR pszCookie = NULL,
LPCBYTE pbPost = NULL, UINT uPost = 0, LPBYTE pbReceive = NULL, LPUINT puReceive = 0,
LPSTR pszProxy = NULL, USHORT uProxy = 0, BOOL bResolve = FALSE, HWND hNotify = NULL);
#else // __cplusplus
HRERROR WINAPI HttpRequest(LPSTR pszHost, USHORT uPort, LPCSTR pszUri,
LPSTR pszHttpHost, LPCSTR pszRefer, LPCSTR pszCookie,
LPCBYTE pbPost, UINT uPost, LPBYTE pbReceive, LPUINT puReceive,
LPSTR pszProxy, USHORT uProxy, BOOL bResolve, HWND hNotify);
#endif // __cplusplus
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -