我正在使用 C++ REST SDK 从 API 获取响应,并且我需要将 Concurrency::streams::basic_istream
转换为 byte[]
。
pplx::task<void> GetResponse()
{
http_client client(url);
return client.request(methods::GET).then([](http_response response)
{
std::wostringstream ss;
ss << L"Server returned returned status code " << response.status_code() << L'.' << std::endl;
std::wcout << ss.str();
auto bodyStream = response.body();
});
}
bodyStream
的类型为 Concurrency::streams::basic_istream
。
我得到的响应的content-type
是application/octet-stream
。
如何将其转换为byte[]
?
最佳答案
使用 http_response::extract_vector
怎么样?方法以字节数组形式返回响应正文?
pplx::task<std::vector<unsigned char>> GetResponse()
{
http_client client(url);
return client.request(methods::GET).then([](http_response response)
{
std::wostringstream ss;
ss << L"Server returned returned status code " << response.status_code() << L'.' << std::endl;
std::wcout << ss.str();
return response.extract_vector();
});
}
或者如果您不需要标准输出日志记录,则更简单:
pplx::task<std::vector<unsigned char>> GetResponse()
{
http_client client(url);
return client.request(methods::GET).get().extract_vector();
}
然后,您可以在返回的 vector
上调用data()
来获取指向底层无符号字符数组(相当于字节数组)的指针。
关于c++ - 使用 C++ REST SDK 将 Stream 响应转换为 byte[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41264332/