【发布时间】:2017-03-21 09:32:44
【问题描述】:
我应该如何使用 cpprestsdk 处理分块响应?如何请求下一个块?那里有必要的功能吗?
以下是我们执行 http 请求的方式:
web::http::http_request request(web::http::methods::GET);
request.headers().add(LR"(User-Agent)", LR"(ExchangeServicesClient/15.00.0847.030)");
request.headers().add(LR"(Accept)", LR"(text/xml)");
request.set_body(L"request body", L"text/xml");
web::http::client::http_client_config clientConfig;
clientConfig.set_credentials(web::credentials(L"username", L"pass"));
clientConfig.set_validate_certificates(true);
web::http::client::http_client client(L"serviceurl", clientConfig);
auto bodyTask = client.request(request)
.then([](web::http::http_response response) {
auto str = response.extract_string().get();
return str;
});
auto body = bodyTask.get();
如果我在这个请求之后天真地尝试执行另一个请求,那么我得到一个错误:
WinHttpSendRequest: 5023: 组或资源未处于正确的状态以执行 请求的操作。
【问题讨论】:
-
看起来他们已经为这种功能创建了一个测试:github.com/Microsoft/cpprestsdk/blob/master/Release/tests/… 您可能需要做一些工作才能将结果流引导到您的预期目的地。
标签: c++ chunked-encoding casablanca cpprest-sdk