怎么得到curlpp响应头

时间:2018-03-22 10:40:07

标签: c++ curl http-headers httpresponse curlpp

我正在使用JSON有效负载调用REST WS来订阅某些事件。服务器在HTTP-Header中使用HTTP-Code 201和名为 Location 的字段回复,其中包含订阅的ID。

例如,在curl(-v)中我们得到:

[...]
< HTTP/1.1 201 Created
< Connection: Keep-Alive
< Content-Length: 0
< Location: /v2/subscriptions/5ab386ad4bf6feec37ffe44d
[...]

在使用curlpp的C ++中,我们想要检索查看响应头的id。现在我们只有身体反应(在这种情况下是空的)。

std::ostringstream response;
subRequest.setOpt(new curlpp::options::WriteStream(&response));

// Send request and get a result.
subRequest.perform();

cout << response.str() << endl;

我们如何使用curlpp在C ++中获取位置标题的字段(其示例中的内容为“/ v2 / subscriptions / 5ab386ad4bf6feec37ffe44d”)?

2 个答案:

答案 0 :(得分:1)

好的,我找到了。

简单地添加

subRequest.setOpt(new curlpp::options::Header(1));

执行操作并在响应中存储标题。

答案 1 :(得分:1)

使用curlpp::infos::*::get函数族可以检索到多个值。例如HTTP响应代码:

curlpp::infos::ResponseCode::get(subRequest) 

有关完整列表,请参见Infos.hpp标头。当您需要这些信息之一无法提供的值时,您还可以选择在回调中与主体分开接收标头。

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;
    }));