Как получить заголовок ответа curlpp

Я вызываю REST WS с полезной нагрузкой JSON, чтобы подписаться на определенные события. Сервер отвечает с HTTP-кодом 201 и полем с именем Место нахождения в заголовке HTTP с идентификатором подписки.

Как пример, в curl (-v) мы получаем:

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

В C ++ с использованием curlpp мы хотим получить этот идентификатор, глядя на заголовок ответа. Теперь у нас есть только ответ тела (в данном случае пустой).

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

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

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

Как мы можем получить Место нахождения поле заголовка (чье содержимое в примере «/ v2 / subscription / 5ab386ad4bf6feec37ffe44d») в C ++ с использованием curlpp?

0

Решение

Есть несколько значений, которые вы можете получить, используя семейство 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;
}));
1

Другие решения

Хорошо, я нашел это.

Просто добавив

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

делать трюки и сохраняет заголовки в ответе.

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector