HTTP状态代码到HRESULT映射

时间:2014-09-24 16:02:07

标签: c++ http-status-codes hresult

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

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

2 个答案:

答案 0 :(得分:1)

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

e.g。 404定义为:

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

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

答案 1 :(得分:0)

Windows SDK 8.0 为 HRESULT 中的几乎所有 HTTP 状态代码引入了 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)