如何从 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
。
我使用过几次 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
。