ваши двоичные данные - отдельная проблема, но чтобы заставить libcurl использовать http2, если вы знаете, что целевой сервер поддерживает его, попробуйте установить CURLOPT_HTTP_VERSION
в CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE
curl_easy_setopt(curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE);
как для вашего двоичного файлапроблема с данными ... это, вероятно, ошибочный http-сервер, который отправляет сжатый ответ, даже если в запросе не указаны заголовки "Accept-Encoding" ... установите CURLOPT_VERBOSE в 1, чтобы проверить (если ваш запрос не содержитзаголовок «Accept-Encoding», и ответ содержит заголовок «Encoding:», это ваша бинарная проблема. Чтобы решить ее, обычно достаточно установить CURLOPT_ENCODING в значение emptystring, тогда curl попытается автоматически распаковать его для вас, при условии, что этофактически поддерживает кодировку curl, в противном случае вам нужно распаковать ее самостоятельно.)