HTTP状态代码到HRESULT的映射



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

感谢您提前提供的帮助。

一种方法是将Microsoft SDK中的BitsMsg.h用于一组HTTP状态代码

例如404被定义为:

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新