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