如何从 header 检索不记名令牌(rest sdk)

How to retrieve bearer token from header (rest sdk)

我使用过几次 REST SDK。我想使用 C++ 从响应 header 中检索 Bearer 标记。

邮递员图片:

我试过这个:

CMyClass::SomeMethod(const web::http::http_request& Request)
{
    const web::http::http_headers& headers = Request.headers();
    web::http::http_headers::const_iterator it = headers.find(web::http::header_names::authorization);
    if (it != headers.end())
    {
        std::cout << "+++\t" << it->first.c_str() << "\t" << it->second.c_str() << std::endl;
    }
}

但我只得到这个:

这告诉我我做错了什么。

那么,如何从 web::http::http_request header 中检索 Bearer 令牌?

您看到的输出意味着您没有将 char* 字符串指针传递给 std::cout

假设您使用的是 Microsoft's REST SDK (you did not say), its web::http::http_headers class holds utility::string_t values, and utility::string_t is defined as std::wstring on Windows (despite what the documentation,而不是您期望的 std::string

这意味着您正在将 wchar_t* 字符串指针传递给 std:::cout,它没有 wchar_t*operator<<,但有一个 void* ],因此您看到的输出。

您需要使用 std::wcout,或者在打印之前将 std::wstring 数据转换为 std::string