Почему libcurl не обновляет соединение до HTTP / 2? - PullRequest
0 голосов
/ 25 мая 2018

Я хочу отправить POST на веб-сайт, который поддерживает HTTP / 2, но libcurl не использует эту версию HTTP, вместо этого она использует 1.1 и программу «beep», когда отображает ответ (двоичные данные).Что я могу сделать, чтобы правильно отобразить ответ и использовать HTTP / 2?

Что я сделал, чтобы решить проблему: - встроенный libcurl с nghttp2 и OpenSSL , - измененбиблиотека CURLOPT_HTTP_VERSION опция для CURL_HTTP_VERSION_2_0 ,

1 Ответ

0 голосов
/ 26 мая 2018

ваши двоичные данные - отдельная проблема, но чтобы заставить 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, в противном случае вам нужно распаковать ее самостоятельно.)

...