Страница 22 из 30

libcurl for Clarion

Добавлено: 22 Март 2019, 16:46
Admin
Дед Пахом писал(а): 22 Март 2019, 15:10Так то вроде всё верно.
Пробовал уже перед уходом с работы сделать тестовый сервачек (php) для посмотреть что libcurl отдает серверу.
Вроде все нормально. Отписал поставщикам API. Может ответят что нибудь.

libcurl for Clarion

Добавлено: 25 Март 2019, 6:53
Admin
Разобрался. Не хватало

Код: Выделить всё

curl.AddHttpHeader('Content-Type: application/json')

libcurl for Clarion

Добавлено: 25 Апрель 2019, 15:39
harry
Добрый день!
Может кто сталкивался с проблемой?
Пользуюсь библиотекой Libcurl для запросов по HTTPS. Для отладки стоял Fiddler, и запросы шли через proxy и все было хорошо. Потом отключил proxy и получил ошибку:
error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure .
Сервер, к которому идет запрос, предполагает
ssl_protocols: TLSv1
ssl_ciphers: GOST2012-GOST8912-GOST8912.
Корневой сертификат от CryptoPro с ГОСТ алгоритмами установлен, как и положено.

libcurl for Clarion

Добавлено: 25 Апрель 2019, 16:03
Дед Пахом
error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure .
Здесь практически тот же вопрос, ответы не читал, но их много :-)

libcurl for Clarion

Добавлено: 03 Май 2019, 17:28
Маринец
Нужно работать по протоколу ftps. Попробовала FTPManager.
Для ftps добавила после ThisCurl.Init()
ThisCurl.UseSSL(CURLUSESSL_ALL)
ThisCurl.SetSSLVersion(CURL_SSLVERSION_DEFAULT)
Thiscurl.SetSSLVerifyPeer(false)
Thiscurl.SetSSLVerifyHost(false)
пока не получается

Может быть кто-то пробовал работать через SSL. Помогите

libcurl for Clarion

Добавлено: 03 Май 2019, 17:51
Дед Пахом
Маринец писал(а): 03 Май 2019, 17:28пока не получается
Если не получается, надо смотреть в DebugView.

libcurl for Clarion

Добавлено: 03 Май 2019, 17:59
Игорь Столяров
Ну да - нужно знать, что именно не проходит … Я бы добавил сразу после INIT:

Код: Выделить всё

     ! --- Set SSH authentication

     Clear(SSHSettings)
     SSHSettings:AuthMethod = CURLSSH_AUTH_ANY ! CURLSSH_AUTH_NONE
     Loc:xRes = ThisCurl.SSHAuth(SSHSettings)
     If Loc:xRes <> CURLE_OK
         Message(' Ошибка: ' & ThisCurl.StrError(Loc:xRes),'Проблема',Icon:Exclamation,'Закрыть')
     end

libcurl for Clarion

Добавлено: 04 Май 2019, 10:57
Маринец
Помогло, вот так

Thiscurl.setopt(CURLOPT_TLSAUTH_USERNAME,'dms_user')
Thiscurl.setopt(CURLOPT_TLSAUTH_PASSWORD,'VKB7Ekkp6Bd2')
ThisCurl.UseSSL(CURLUSESSL_ALL)
ThisCurl.setopt(CURLOPT_FTPSSLAUTH,CURLFTPAUTH_TLS)
ThisCurl.SetSSLVersion(CURL_SSLVERSION_TLSv1)
Thiscurl.SetSSLVerifyPeer(false)
Thiscurl.SetSSLVerifyHost(false)

libcurl for Clarion

Добавлено: 05 Сентябрь 2019, 16:19
RaFaeL
Как скачать файл с оригинальным именем?
http://qaru.site/questions/2160516/libc ... emote-name
Сейчас метод класса ReadFile требует обязательного указания локального имени файла, а мне нужно скачать файл с оригинальным именем (которое будет передано в Content-Disposition) в указанную папку. Оригинальное имя я не знаю и в ссылке его нет

libcurl for Clarion

Добавлено: 05 Сентябрь 2019, 17:07
Дед Пахом
RaFaeL писал(а): 05 Сентябрь 2019, 16:19Как скачать файл с оригинальным именем?
Я вижу 2 варианта.
  • Переопределить виртуальный метод TalkCallback, где ловить ptype=CURLINFO_HEADER_IN, парсить ptext на предмет "Content-Disposition filename=xxx.zzz", после закачки переименовать полученный файл.
  • Сперва выполнить запрос только заголовка: curl.SetOpt(CURLOPT_NOBODY, 1), затем полный запрос, подставив в ReadFile имя из заголовка.

libcurl for Clarion

Добавлено: 05 Сентябрь 2019, 17:37
RaFaeL
А можно попросить добавить в класс метод что-то типа GetHTTPHeaders(*STRING) который получает заголовок
https://curl.haxx.se/libcurl/c/CURLOPT_HEADERDATA.html
Не могу понять что за колбэки от меня требуют. А дальше сделаю типа как тут https://stackoverflow.com/a/25878250

libcurl for Clarion

Добавлено: 05 Сентябрь 2019, 17:49
Дед Пахом
RaFaeL писал(а): 05 Сентябрь 2019, 17:37А можно попросить добавить в класс метод что-то типа GetHTTPHeaders(*STRING) который получает заголовок
Чем CURLOPT_NOBODY не устраивает?

libcurl for Clarion

Добавлено: 05 Сентябрь 2019, 18:38
RaFaeL
Разобрался. Еще нужно curl.SetOpt(CURLOPT_HEADER, 1) тогда получаю то что нужно. Просто CURLOPT_NOBODY не хватит

libcurl for Clarion

Добавлено: 07 Сентябрь 2019, 20:43
Дед Пахом
Обновил до версии 1.44.
v1.44
- NEW: TCurlMultiClass: Enables multiple simultaneous transfers in the same thread without making it complicated for the application.
- NEW: 10-at-a-time example: Download many files in parallel, in the same thread.

libcurl for Clarion

Добавлено: 07 Октябрь 2019, 23:35
Дед Пахом
Загрузил новый пример "Google Translate".