curl_easy_setopt(m_pCurl, CURLOPT_URL, szURL);
curl_easy_setopt(m_pCurl, CURLOPT_UPLOAD,0);
curl_easy_setopt(m_pCurl, CURLOPT_WRITEFUNCTION, s_Write_Data);
curl_easy_setopt(m_pCurl, CURLOPT_WRITEDATA, this);
curl_easy_setopt(m_pCurl, CURLOPT_CONNECTTIMEOUT, 10);
curl_easy_setopt(m_pCurl, CURLOPT_NOPROGRESS, 0);
curl_easy_setopt(m_pCurl, CURLOPT_PROGRESSFUNCTION, s_Progress);
curl_easy_setopt(m_pCurl, CURLOPT_PROGRESSDATA, this);
curl_easy_setopt(m_pCurl, CURLOPT_HTTP_CONTENT_DECODING, 0L);
Выше приведены все мои варианты перевода.Загрузка возвращает файл .tar.gz, который с помощью командной строки curl или WGET возвращает абсолютно нормально, при использовании libcurl возвращаемые данные имеют длину около 8 Кб, выполнение команды cmp показывает, что 2 файла изменяются в пределах первых 10 байтов.Просматривал это в течение 2 дней без признаков надежды.Пробовал различные комбинации различных опций.
s_Write_Data реализован как:
size_t CCurlManager::s_Write_Data(void *buffer, size_t size, size_t nmemb, void *userp)
{
CCurlManager *pThis = reinterpret_cast<CCurlManager *>(userp);
return pThis->WriteData(buffer, size, nmemb);
}
Заголовок ответа, который я получаю от curl verbose:
HTTP/1.1 200 OK
Date: Mon, 17 Dec 2018 13:56:39 GMT
Server: Apache/2.2.13 (Linux/SUSE)
X-Powered-By: PHP/5.4.20
Content-Length: 393800
Content-Disposition: attachment; filename="test.tar.gz"
Connection: close
Content-Type: application/octet-stream