如何获得 curlpp 响应 header
How get curlpp response header
我正在调用带有 JSON 负载的 REST WS 来订阅某些事件。服务器使用 HTTP-Code 201 和 HTTP-Header 中名为 Location 的字段以及订阅 ID 进行响应。
例如,在 curl (-v) 中我们得到:
[...]
< HTTP/1.1 201 Created
< Connection: Keep-Alive
< Content-Length: 0
< Location: /v2/subscriptions/5ab386ad4bf6feec37ffe44d
[...]
在使用 curlpp 的 C++ 中,我们希望通过查看响应来检索该 ID header。现在我们只有 body 响应(在本例中为空)。
std::ostringstream response;
subRequest.setOpt(new curlpp::options::WriteStream(&response));
// Send request and get a result.
subRequest.perform();
cout << response.str() << endl;
如何使用curlpp在C++中获取Locationheader的字段(示例中的内容为“/v2/subscriptions/5ab386ad4bf6feec37ffe44d”?
好的,我找到了。
只需添加
subRequest.setOpt(new curlpp::options::Header(1));
执行此操作并在响应中存储 headers。
您可以使用 curlpp::infos::*::get
函数系列检索多个值。例如 HTTP 响应代码:
curlpp::infos::ResponseCode::get(subRequest)
有关完整列表,请参阅 Infos.hpp header。当您需要一个无法通过这些信息之一获得的值时,您还可以选择在回调中与 body 分开接收 header。
subRequest.setOpt(new curlpp::options::HeaderFunction(
[] (char* buffer, size_t size, size_t items) -> size_t {
std::string s(buffer, size * items); // buffer is not null terminated
std::cout << s;
return size * items;
}));
我正在调用带有 JSON 负载的 REST WS 来订阅某些事件。服务器使用 HTTP-Code 201 和 HTTP-Header 中名为 Location 的字段以及订阅 ID 进行响应。
例如,在 curl (-v) 中我们得到:
[...]
< HTTP/1.1 201 Created
< Connection: Keep-Alive
< Content-Length: 0
< Location: /v2/subscriptions/5ab386ad4bf6feec37ffe44d
[...]
在使用 curlpp 的 C++ 中,我们希望通过查看响应来检索该 ID header。现在我们只有 body 响应(在本例中为空)。
std::ostringstream response;
subRequest.setOpt(new curlpp::options::WriteStream(&response));
// Send request and get a result.
subRequest.perform();
cout << response.str() << endl;
如何使用curlpp在C++中获取Locationheader的字段(示例中的内容为“/v2/subscriptions/5ab386ad4bf6feec37ffe44d”?
好的,我找到了。
只需添加
subRequest.setOpt(new curlpp::options::Header(1));
执行此操作并在响应中存储 headers。
您可以使用 curlpp::infos::*::get
函数系列检索多个值。例如 HTTP 响应代码:
curlpp::infos::ResponseCode::get(subRequest)
有关完整列表,请参阅 Infos.hpp header。当您需要一个无法通过这些信息之一获得的值时,您还可以选择在回调中与 body 分开接收 header。
subRequest.setOpt(new curlpp::options::HeaderFunction(
[] (char* buffer, size_t size, size_t items) -> size_t {
std::string s(buffer, size * items); // buffer is not null terminated
std::cout << s;
return size * items;
}));