如何从 WinHttp 请求中获取 HTTP 状态码?
Posted
技术标签:
【中文标题】如何从 WinHttp 请求中获取 HTTP 状态码?【英文标题】:How to get HTTP status code from WinHttp request? 【发布时间】:2014-07-17 09:12:23 【问题描述】:This page on msdn 包含可能在 WinHTTP 中使用的 HTTP 状态代码的定义。有没有办法从 WinHttp 中发出的请求中检索 HTTP 状态码?
我发现获取响应文本的唯一方法是调用WinHttpQueryHeaders
,它会返回如下 HTTP 响应:
HTTP/1.1 404 Not Found
Date: Wed, 28 May 2014 08:20:29 GMT
Content-Length: 0
Server: Microsoft-HTTPAPI/2.0
我必须自己解析这个字符串来获取状态码,还是 WinHttp 已经提供了一些方法来做到这一点?
【问题讨论】:
【参考方案1】:使用它来读取 http 状态码(hRequest - 请求的句柄)。
DWORD dwStatusCode = 0;
DWORD dwSize = sizeof(dwStatusCode);
WinHttpQueryHeaders(hRequest,
WINHTTP_QUERY_STATUS_CODE | WINHTTP_QUERY_FLAG_NUMBER,
WINHTTP_HEADER_NAME_BY_INDEX,
&dwStatusCode, &dwSize, WINHTTP_NO_HEADER_INDEX);
【讨论】:
以上是关于如何从 WinHttp 请求中获取 HTTP 状态码?的主要内容,如果未能解决你的问题,请参考以下文章
阐明 WINHTTP_STATUS_CALLBACK 函数的用法,用于 SSL 状态代码
WinHttp.WinHttpRequest 添加到内容类型