libcurl for Clarion

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

libcurl for Clarion

Сообщение Admin »

Дед Пахом писал(а): 22 Март 2019, 15:10Так то вроде всё верно.
Пробовал уже перед уходом с работы сделать тестовый сервачек (php) для посмотреть что libcurl отдает серверу.
Вроде все нормально. Отписал поставщикам API. Может ответят что нибудь.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

libcurl for Clarion

Сообщение Admin »

Разобрался. Не хватало

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

curl.AddHttpHeader('Content-Type: application/json')
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
harry
Бывалый
Сообщения: 69
Зарегистрирован: 24 Февраль 2015, 14:16
Поблагодарили: 3 раза

libcurl for Clarion

Сообщение 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 с ГОСТ алгоритмами установлен, как и положено.
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

libcurl for Clarion

Сообщение Дед Пахом »

error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure .
Здесь практически тот же вопрос, ответы не читал, но их много :-)
С уважением, ДП
Аватара пользователя
Маринец
Новичок
Сообщения: 6
Зарегистрирован: 16 Сентябрь 2005, 17:06
Откуда: Санкт-Петербург

libcurl for Clarion

Сообщение Маринец »

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

Может быть кто-то пробовал работать через SSL. Помогите
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

libcurl for Clarion

Сообщение Дед Пахом »

Маринец писал(а): 03 Май 2019, 17:28пока не получается
Если не получается, надо смотреть в DebugView.
С уважением, ДП
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7323
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

libcurl for Clarion

Сообщение Игорь Столяров »

Ну да - нужно знать, что именно не проходит … Я бы добавил сразу после 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
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Маринец
Новичок
Сообщения: 6
Зарегистрирован: 16 Сентябрь 2005, 17:06
Откуда: Санкт-Петербург

libcurl for Clarion

Сообщение Маринец »

Помогло, вот так

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)
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

libcurl for Clarion

Сообщение RaFaeL »

Как скачать файл с оригинальным именем?
http://qaru.site/questions/2160516/libc ... emote-name
Сейчас метод класса ReadFile требует обязательного указания локального имени файла, а мне нужно скачать файл с оригинальным именем (которое будет передано в Content-Disposition) в указанную папку. Оригинальное имя я не знаю и в ссылке его нет
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

libcurl for Clarion

Сообщение Дед Пахом »

RaFaeL писал(а): 05 Сентябрь 2019, 16:19Как скачать файл с оригинальным именем?
Я вижу 2 варианта.
  • Переопределить виртуальный метод TalkCallback, где ловить ptype=CURLINFO_HEADER_IN, парсить ptext на предмет "Content-Disposition filename=xxx.zzz", после закачки переименовать полученный файл.
  • Сперва выполнить запрос только заголовка: curl.SetOpt(CURLOPT_NOBODY, 1), затем полный запрос, подставив в ReadFile имя из заголовка.
С уважением, ДП
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

libcurl for Clarion

Сообщение RaFaeL »

А можно попросить добавить в класс метод что-то типа GetHTTPHeaders(*STRING) который получает заголовок
https://curl.haxx.se/libcurl/c/CURLOPT_HEADERDATA.html
Не могу понять что за колбэки от меня требуют. А дальше сделаю типа как тут https://stackoverflow.com/a/25878250
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

libcurl for Clarion

Сообщение Дед Пахом »

RaFaeL писал(а): 05 Сентябрь 2019, 17:37А можно попросить добавить в класс метод что-то типа GetHTTPHeaders(*STRING) который получает заголовок
Чем CURLOPT_NOBODY не устраивает?
С уважением, ДП
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

libcurl for Clarion

Сообщение RaFaeL »

Разобрался. Еще нужно curl.SetOpt(CURLOPT_HEADER, 1) тогда получаю то что нужно. Просто CURLOPT_NOBODY не хватит
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

libcurl for Clarion

Сообщение Дед Пахом »

Обновил до версии 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.
С уважением, ДП
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

libcurl for Clarion

Сообщение Дед Пахом »

Загрузил новый пример "Google Translate".
С уважением, ДП
Закрыто