libcurl を使用して HTTP ポスト リクエストを送信し、その後レスポンスを処理しています。応答が受信されると、ライブラリは をCURLOPT_WRITEFUNCTION
介してプロパティに指定された関数を使用して私のプログラムにコールバックしますcurl_easy_setopt
。
// callback function
std::size_t on_data(const char* buffer, const std::size_t size, const std::size_t nmemb, void* context);
ドキュメントからは不明です (コールバックから 0 を返すことにより) バッファにデータを残すことができます。または、データをローカル バッファにコピーしてから、メッセージ全体を受信するまで、後続の各コールバックでこれに追加し続ける必要があります。 .
私の質問は次のとおりです。
- メッセージ全体の長さを取得する最良の方法は何ですか? 経由で
Content-Length
ヘッダーからCURLOPT_WRITEHEADER
ですか? - 最終メッセージが受信されるのを待ってから、これを完全に処理する代わりに、部分的な応答をコピーしないようにする方法はありますか?