1

我正在研究用 C++ 为 RESTful Web 服务开发一个 COM 包装器库,并且想知道是否有任何标准方法可以将 HTTP 状态代码值映射到将通过 COM API 返回的 HRESULT。我已经浏览了 WinError.h 中的定义,但没有看到任何合适的内容。我知道您可以定义自己的 HRESULT 值范围,但(与往常一样)如果存在标准方法,我更愿意采用标准方法。

感谢您提前提供任何帮助。

4

2 回答 2

2

一种方法是使用Microsoft SDK 中的BitsMsg.h获取一组 HTTP 状态代码

例如 404 定义为:

#define BG_E_HTTP_ERROR_404              0x80190194L
// ^^ The requested URL does not exist on the server.

要在线查看这些代码,请使用以下链接:HRESULTS:FACILITY_HTTPBitsMsg.h

于 2014-09-24T19:41:34.173 回答
0

Windows SDK 8.0HRESULT中几乎所有的 HTTP 状态码都引入了 s winerror.h,例如:

#define HTTP_E_STATUS_NOT_FOUND _HRESULT_TYPEDEF_(0x80190194L)

如果您检查了 的所有值HTTP_E_*,您可能会发现错误代码部分HRESULT只是 HTTP 状态代码。然后,您可以定义一个宏来将任何 http 状态代码转换为 HRESULT:

#define HRESULT_FROM_HTTP(code) MAKE_HRESULT(SEVERITY_ERROR, FACILITY_HTTP, code)
于 2021-07-02T02:37:37.340 回答