gpt4 book ai didi

c++ - cpprestsdk/casablanca 的 http_client

转载 作者:行者123 更新时间:2023-11-28 01:34:36 26 4
gpt4 key购买 nike

我有一个 api https://api.gm-system.net/api/authenticate/searchStaffs/searchText,它返回一个员工列表。

这里是我使用 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需要时上课,不要将其与 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 type 可以用作传入的参数类型(即在 Windows 上使用 std::wstring):

std::wstring searchText = L"Michael";
MyTest(searchText);

关于c++ - cpprestsdk/casablanca 的 http_client,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49868625/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com