http_client 个 cpprestsdk/casablanca
http_client of cpprestsdk/casablanca
我有 api https://api.gm-system.net/api/authenticate/searchStaffs/searchText
其中 return 一个列表人员。
这是我使用 cpprestsdk
和 c++ 访问此 api 的代码。
auto fileStream = std::make_shared<ostream>();
// Open stream to output file.
pplx::task<void> requestTask = fstream::open_ostream(U("results.html")).then([=](ostream outFile)
{
*fileStream = outFile;
// Create http_client to send the request.
http_client client(U("https://api.gm-system.net/api/authenticate/searchStaffs/michael"));
return client.request(methods::GET);
})
// Handle response headers arriving.
.then([=](http_response response)
{
......
}
这一张不错。但是我只是手动输入 "michael" searchText
.
我怎样才能让它接受任何类似这样的搜索文本。
void MyTest(std::string searchText)
{
..... code here
// Create http_client to send the request.
http_client client(U("https://api.gm-system.net/api/authenticate/searchStaffs/" + searchText));
return client.request(methods::GET);
..... code here
}
我已经试过了,但是不行。 'U' 宏有些问题。
来自 https://github.com/Microsoft/cpprestsdk/wiki/FAQ U macro
的描述是:
The 'U' macro can be used to create a string literal of the platform type. If you are using a library causing conflicts with the 'U' macro, for example Boost.Iostreams it can be turned off by defining the macro '_TURN_OFF_PLATFORM_STRING' before including the C++ REST SDK header files.
如果我将光标指向 U
,则错误显示:
no operator "+" matches these operands operand types are; const wchar_t[57] + const std::string
希望有人能帮助我。谢谢。
自从
The C++ REST SDK uses a different string type dependent on the
platform being targeted. For example for the Windows platforms
utility::string_t is std::wstring using UTF-16, on Linux std::string
using UTF-8.
您应该在需要时使用 utility::string_t
class,不要将其与 std::string
或 const char *
混合使用(并使用 U
需要文字时的宏)。
换句话说,您的函数应该接受 utility::string_t
作为其 searchText
参数(而不是 std::string
):
void MyTest(utility::string_t searchText)
{
http_client client(U("https://api.gm-system.net/api/authenticate/searchStaffs/") + searchText);
// etc ...
}
像这样使用它:
int main()
{
utility::string_t searchText = U("Michael");
MyTest(searchText);
return 0;
}
如果必须从特定于平台的上下文调用该函数,则可以使用相应的 std
类型作为传入的参数类型(即在 Windows 上使用 std::wstring
) :
std::wstring searchText = L"Michael";
MyTest(searchText);
我有 api https://api.gm-system.net/api/authenticate/searchStaffs/searchText
其中 return 一个列表人员。
这是我使用 cpprestsdk
和 c++ 访问此 api 的代码。
auto fileStream = std::make_shared<ostream>();
// Open stream to output file.
pplx::task<void> requestTask = fstream::open_ostream(U("results.html")).then([=](ostream outFile)
{
*fileStream = outFile;
// Create http_client to send the request.
http_client client(U("https://api.gm-system.net/api/authenticate/searchStaffs/michael"));
return client.request(methods::GET);
})
// Handle response headers arriving.
.then([=](http_response response)
{
......
}
这一张不错。但是我只是手动输入 "michael" searchText
.
我怎样才能让它接受任何类似这样的搜索文本。
void MyTest(std::string searchText)
{
..... code here
// Create http_client to send the request.
http_client client(U("https://api.gm-system.net/api/authenticate/searchStaffs/" + searchText));
return client.request(methods::GET);
..... code here
}
我已经试过了,但是不行。 'U' 宏有些问题。
来自 https://github.com/Microsoft/cpprestsdk/wiki/FAQ U macro
的描述是:
The 'U' macro can be used to create a string literal of the platform type. If you are using a library causing conflicts with the 'U' macro, for example Boost.Iostreams it can be turned off by defining the macro '_TURN_OFF_PLATFORM_STRING' before including the C++ REST SDK header files.
如果我将光标指向 U
,则错误显示:
no operator "+" matches these operands operand types are; const wchar_t[57] + const std::string
希望有人能帮助我。谢谢。
自从
The C++ REST SDK uses a different string type dependent on the platform being targeted. For example for the Windows platforms utility::string_t is std::wstring using UTF-16, on Linux std::string using UTF-8.
您应该在需要时使用 utility::string_t
class,不要将其与 std::string
或 const char *
混合使用(并使用 U
需要文字时的宏)。
换句话说,您的函数应该接受 utility::string_t
作为其 searchText
参数(而不是 std::string
):
void MyTest(utility::string_t searchText)
{
http_client client(U("https://api.gm-system.net/api/authenticate/searchStaffs/") + searchText);
// etc ...
}
像这样使用它:
int main()
{
utility::string_t searchText = U("Michael");
MyTest(searchText);
return 0;
}
如果必须从特定于平台的上下文调用该函数,则可以使用相应的 std
类型作为传入的参数类型(即在 Windows 上使用 std::wstring
) :
std::wstring searchText = L"Michael";
MyTest(searchText);