Написать обратный вызов для https в libcurl на Windows - PullRequest
0 голосов
/ 10 июня 2018

Я установил libcurl (curl-7.60.0) из исходного кода в качестве статической библиотеки в Windows 10 и Visual studio 2015. В curl / curl.h я добавил следующие #defines: BUILDING_LIBCURL, CURL_STATICLIB, USE_SCHANNEL и USE_WINDOWS_SSPI.Из C ++ у меня нет проблем с доступом и сохранением в файл с http: // с помощью простой функции обратного вызова записи (возврат fwrite (ptr, size, nmemb, (FILE *) stream)).

Когда я пытаюсьзагрузка с https://[host][file путь] с той же функцией обратного вызова, у меня ничего не загружено.Curl_version_info говорит, что https поддерживается (без нескольких бэкэндов), с именем библиотеки TLS = WinSSL.Schannel сообщает о соединении SSL / TLS с хостом.Curl сообщает «GET [путь к файлу] HTTP / 1.1» и «Принять / ».

Затем schannel сообщает о чтении и дешифровании некоторых данных, «HTTP / 1.1 302 FOUND» и правильныеМесто нахождения.Curl_easy_perform не сообщает об ошибке, но Content-length равен 0, байты не записываются, и я вижу, что функция обратного вызова write никогда не вызывалась.

Загрузка того же файла с помощью веб-браузера не является проблемой.

Кажется, мне не удалось вызвать функцию обратного вызова записи для тела https.Я не могу найти параметр curl_easy_setopt, чтобы решить эту проблему, и подозреваю, что для сборки библиотеки не хватает некоторого #define.

Может кто-нибудь понять и помочь, пожалуйста?

1 Ответ

0 голосов
/ 11 июня 2018

Обратный вызов записи работает одинаково независимо от используемого протокола.

Однако HTTP-ответ 302 без длины контента звучит как ничто для отправки в обратный вызов, так что это было бы совершенно нормально!

Вы , вероятно, хотите сказать libcurl следовать перенаправлениям ?

...