【问题标题】:HTTP Status code to HRESULT mappingHTTP 状态码到 HRESULT 映射
【发布时间】:2014-09-24 16:02:06
【问题描述】:

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

提前感谢您的帮助。

【问题讨论】:

  • 没有标准,你可以使用Windows Phone error codes。只是不要,制作自己的 HRESULT。设置客户位,十亿对每个人都足够了:)
  • 好建议。谢谢。

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


【解决方案1】:

一种方法是使用 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

【讨论】:

  • 非常感谢您的回答,这正是我一直在寻找但未能找到自己的东西。
【解决方案2】:

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

#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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-10
    • 1970-01-01
    • 2015-07-19
    • 2017-09-09
    • 2011-01-23
    • 2019-03-25
    相关资源
    最近更新 更多