最近、libcurlを使用してインターネットからWebページを取得するプログラムを構築しています.チャンクエンコーディングを使用した応答で、libcurlがチャンクヘッダーを取得できないことがわかりました.次に、libcurlオンラインドキュメントを調べたところ、WriteFunctionによるチャンクヘッダータックルと書かれていますlibcurl バージョン 2.18 を使用しています。CURLOPT_WRITEFUNCTION と CURLOPT_HEADERFUNCTION のコールバックを設定しました。チャンク ヘッダーに関する単一の文字以外は何も取得していません。チャンク エンコーディングを使用する libcurl に問題はありますか? 正しく動作させるにはどうすればよいですか?ありがとう ps 私が取得しようとしている Web はhttp://list.taobao.com/browse/cat-0.htmです。gbk エンコーディングを使用する中国語の Web サイトです。
ここに私がcliburlに行った設定があります
int32_t progress = 0;
PROCESS_ERROR(curl_easy_setopt(handle_, CURLOPT_NOPROGRESS, progress) == CURLE_OK);
PROCESS_ERROR(curl_easy_setopt(handle_, CURLOPT_HEADER, 1) == CURLE_OK);
PROCESS_ERROR(curl_easy_setopt(handle_, CURLOPT_DEBUGFUNCTION, &HttpSpider::curl_debug_callback) == CURLE_OK);
PROCESS_ERROR(curl_easy_setopt(handle_, CURLOPT_HTTP_TRANSFER_DECODING, 1) == CURLE_OK);
PROCESS_ERROR(curl_easy_setopt(handle_, CURLOPT_WRITEFUNCTION, &HttpSpider::_ProcessRecvString) == CURLE_OK);
PROCESS_ERROR(curl_easy_setopt(handle_, CURLOPT_HEADERFUNCTION, &HttpSpider::_ProcessRecvHeader) == CURLE_OK);
PROCESS_ERROR(curl_easy_setopt(handle_, CURLOPT_PROGRESSFUNCTION, &HttpSpider::_ProcessRecvProgress) == CURLE_OK);
//ここに他の何かがあります
result = curl_easy_setopt(inst->handle_, CURLOPT_HTTPGET, 1);
result = curl_easy_setopt(inst->handle_, CURLOPT_PROGRESSDATA, param);
result = curl_easy_setopt(inst->handle_, CURLOPT_WRITEDATA, param);
result = curl_easy_setopt(inst->handle_, CURLOPT_WRITEHEADER, param);
result = curl_easy_setopt(inst->handle_, CURLOPT_URL, *url);
printf("/********** HTTP GET **********/\n");
//try to perform a post action
result = curl_easy_perform(inst->handle_);
コールバックは必要に応じて宣言されています。 debugfunction に渡されたバッファにはチャンク長がありますが、 writefunction にはありません。 writefunction でそれを取得するにはどうすればよいですか