![](/img/trans.png)
[英]How to get header response and response body separatey in curlpp response
[英]How get curlpp response header
我正在調用帶有JSON有效負載的REST WS來訂閱某些事件。 服務器用HTTP代碼201和HTTP標頭中帶有訂閱ID的名為Location的字段回答。
例如,在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 ++中的Location標頭字段(示例中的內容為“ / v2 / subscriptions / 5ab386ad4bf6feec37ffe44d”)?
好的,我找到了。
只需添加
subRequest.setOpt(new curlpp::options::Header(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;
}));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.