如何从 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 请求?

如何从 Axios 中的 HTTP 错误中获取状态码?

WinHttp.WinHttpRequest 添加到内容类型

jQuery:如何从 $.ajax.error 方法中获取 HTTP 状态代码?

Win32:WinHttpReadData 中分块编码支持的状态如何?