簡體   English   中英

如何獲取curlpp響應頭

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM