簡體   English   中英

用libevent發出http請求

[英]making http request with libevent

用libevent發出http請求時,如何獲取響應緩沖區中內容的長度? 我知道evbuffer_remove()可以從緩沖區獲取數據,但是我想知道緩沖區的長度。

evbuffer_get_length()將告訴您緩沖區中有多少字節,而evbuffer_remove()將返回從緩沖區復制的字節數。 因此,您可以執行以下操作:

input = bufferevent_get_input(bev);

bytes_received = evbuffer_get_length(input);

/* Note calloc in case we copy less data than we have space allocated. */
data = calloc(bytes_received+1, sizeof(char));

bytes_copied = evbuffer_remove(input, data, bytes_received);

否則,如果您想知道完整的HTTP響應有多長時間(如Joachim Pileborg所述),則標頭將告訴您內容有多長時間,盡管這可能並不總是可靠的。 如果您不能依靠服務器始終提供准確的內容長度標頭,那么您可能需要做的工作就是不斷閱讀,直到找到HTTP響應的結尾為止,為此我強烈建議您使用此庫:

https://github.com/joyent/http-parser

它非常輕松地與Libevent集成。 實際上,我使用該庫來解決這個確定HTTP響應結束的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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