libcurl for Clarion

Программы на Clarion, шаблоны, библиотеки и пр.
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
Маринец
Новичок
Сообщения: 6
Зарегистрирован: 16 Сентябрь 2005, 16:06
Откуда: Санкт-Петербург

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. Помогите

Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2307
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

libcurl for Clarion

Сообщение Дед Пахом » 03 Май 2019, 17:51

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

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 4243
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

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
«V» значит Вендетта !

Аватара пользователя
Маринец
Новичок
Сообщения: 6
Зарегистрирован: 16 Сентябрь 2005, 16:06
Откуда: Санкт-Петербург

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)

Аватара пользователя
RaFaeL
Ветеран
Сообщения: 898
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Контактная информация:

libcurl for Clarion

Сообщение RaFaeL » 05 Сентябрь 2019, 16:19

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

Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2307
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

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 имя из заголовка.
С уважением, ДП

Аватара пользователя
RaFaeL
Ветеран
Сообщения: 898
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Контактная информация:

libcurl for Clarion

Сообщение RaFaeL » 05 Сентябрь 2019, 17:37

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

Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2307
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

libcurl for Clarion

Сообщение Дед Пахом » 05 Сентябрь 2019, 17:49

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

Аватара пользователя
RaFaeL
Ветеран
Сообщения: 898
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Контактная информация:

libcurl for Clarion

Сообщение RaFaeL » 05 Сентябрь 2019, 18:38

Разобрался. Еще нужно curl.SetOpt(CURLOPT_HEADER, 1) тогда получаю то что нужно. Просто CURLOPT_NOBODY не хватит

Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2307
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

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.
С уважением, ДП

Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2307
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

libcurl for Clarion

Сообщение Дед Пахом » 07 Октябрь 2019, 23:35

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

Ответить