libcurl for Clarion

Программы на Clarion, шаблоны, библиотеки и пр.
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
gopstop2007
✯ Ветеран ✯
Сообщения: 1645
Зарегистрирован: 25 Март 2009, 21:55

libcurl for Clarion

Сообщение gopstop2007 »

RaFaeL писал(а): 24 Декабрь 2021, 11:17
gopstop2007 писал(а): 23 Декабрь 2021, 21:13 с libcurl работаю наскоками, искал по форуму не нашел, не подскажите пример или как можно реализовать авторизацию к REST API с помощью JWT token?
Если я правильно понял, о чем речь, то также, как и с любыми другими. Формат токена задет сервер, пользователю должно быть все равно
Спасибо, уже разобрался, у них коротко описано

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

Autorization: JWT token
не знал как в curl оформить, методом научного тыка нашел :)

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

curl.AddHttpHeader('Authorization: Bearer '& GLO:jwtToken)
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2720
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия
Контактная информация:

libcurl for Clarion

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

Оформляйте вопросы в новых темах, в этой уже ничего найти невозможно.
С уважением, ДП
kreator
✯ Ветеран ✯
Сообщения: 4495
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

libcurl for Clarion

Сообщение kreator »

Может подфорум нужен? Для MAV есть.
We are hard at work… for you. :)
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2720
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия
Контактная информация:

libcurl for Clarion

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

Не нужен.
С уважением, ДП
Igor Vesnin
Посетитель
Сообщения: 49
Зарегистрирован: 30 Декабрь 2005, 0:06

libcurl for Clarion

Сообщение Igor Vesnin »

Решил обрусить некоторые ошибки в libcurl.trn
Получил GPF. В общем в TCurlClass.AddErrors после строки

SELF.Errors.Message &= Errs[Follow :Follow+Slen-1]

нужно добавить строку

Follow += Slen
harry
Посетитель
Сообщения: 30
Зарегистрирован: 24 Февраль 2015, 14:16

libcurl for Clarion

Сообщение harry »

Добрый день!
Подскажите, пожалуйста, как в libcurl реализовать отправку по HTTP массива файлов, если такое возможно. Что то типа описанного здесь http://gnyanhub.com/uploading-multiple- ... rl-in-php/
harry
Посетитель
Сообщения: 30
Зарегистрирован: 24 Февраль 2015, 14:16

libcurl for Clarion

Сообщение harry »

Правильно я понимаю, что в этом случае необходим многократный вызов curl_formadd ?
Аватара пользователя
Сергей Фурманов
Прохожий
Сообщения: 4
Зарегистрирован: 28 Ноябрь 2008, 5:56

libcurl for Clarion

Сообщение Сергей Фурманов »

RaFaeL, здравствуйте! Давно читаю ваши сообщения на форуме. Возникла проблема распарсить json, получаемый с dadata.ru через libcurl.
Скачал ваш класс JSON. Создал очередь со всеми возвращаемыми параметрами, внутри очереди создал группы в соответствии с иерархией полученного ответа. Но значения оказались смещены. И ещё нулевые параметры (null) почему-то приняли значение предыдущего параметра.
Короче, подскажите пожалуйста как эту хрень распарсить? Нужно по ИНН получить нужные параметры (Полное наименование, Код ФИАС, Адрес...).
Вот пример ответа:
{"suggestions":[{"value":"ООО \"ЕВРООПТИК\"","unrestricted_value":"ООО \"ЕВРООПТИК\"","data":{"kpp":"027501001","capital":null,"management":{"name":"Азнаев Айдар Салаватович","post":"ГЕНЕРАЛЬНЫЙ ДИРЕКТОР","disqualified":null},"founders":null,"managers":null,"predecessors":null,"successors":null,"branch_type":"MAIN","branch_count":0,"source":null,"qc":null,"hid":"bc18ceb22cfa80c8313b99e3fb8ebb50cb43a689c8d265af872c2250aab6696e","type":"LEGAL","state":{"status":"ACTIVE","code":null,"actuality_date":1600214400000,"registration_date":1032825600000,"liquidation_date":null},"opf":{"type":"2014","code":"12300","full":"Общество с ограниченной ответственностью","short":"ООО"},"name":{"full_with_opf":"ОБЩЕСТВО С ОГРАНИЧЕННОЙ ОТВЕТСТВЕННОСТЬЮ \"ЕВРООПТИК\"","short_with_opf":"ООО \"ЕВРООПТИК\"","latin":null,"full":"ЕВРООПТИК","short":"ЕВРООПТИК"},"inn":"0253014036","ogrn":"1020201433878","okpo":"01265605","okato":"80401380000","oktmo":"80701000001","okogu":"4210014","okfs":"16","okved":"86.21","okveds":null,"authorities":null,"documents":null,"licenses":null,"finance":{"tax_system":null,"income":null,"expense":null,"debt":null,"penalty":null,"year":null},"address":{"value":"г Уфа, ул Карла Маркса, д 51/2","unrestricted_value":"450015, Респ Башкортостан, г Уфа, Ленинский р-н, ул Карла Маркса, д 51/2","data":{"postal_code":"450015","country":"Россия","country_iso_code":"RU","federal_district":"Приволжский","region_fias_id":"6f2cbfd8-692a-4ee4-9b16-067210bde3fc","region_kladr_id":"0200000000000","region_iso_code":"RU-BA","region_with_type":"Респ Башкортостан","region_type":"Респ","region_type_full":"республика","region":"Башкортостан","area_fias_id":null,"area_kladr_id":null,"area_with_type":null,"area_type":null,"area_type_full":null,"area":null,"city_fias_id":"7339e834-2cb4-4734-a4c7-1fca2c66e562","city_kladr_id":"0200000100000","city_with_type":"г Уфа","city_type":"г","city_type_full":"город","city":"Уфа","city_area":null,"city_district_fias_id":null,"city_district_kladr_id":null,"city_district_with_type":"Ленинский р-н","city_district_type":"р-н","city_district_type_full":"район","city_district":"Ленинский","settlement_fias_id":null,"settlement_kladr_id":null,"settlement_with_type":null,"settlement_type":null,"settlement_type_full":null,"settlement":null,"street_fias_id":"a85511a2-4bc4-4814-81f9-02c6d963707b","street_kladr_id":"02000001000004400","street_with_type":"ул Карла Маркса","street_type":"ул","street_type_full":"улица","street":"Карла Маркса","stead_fias_id":null,"stead_cadnum":null,"stead_type":null,"stead_type_full":null,"stead":null,"house_fias_id":"e43d83e9-cfad-46da-8aff-a6c51a6490e9","house_kladr_id":"0200000100000440070","house_cadnum":null,"house_type":"д","house_type_full":"дом","house":"51/2","block_type":null,"block_type_full":null,"block":null,"entrance":null,"floor":null,"flat_fias_id":null,"flat_cadnum":null,"flat_type":null,"flat_type_full":null,"flat":null,"flat_area":null,"square_meter_price":null,"flat_price":null,"postal_box":null,"fias_id":"e43d83e9-cfad-46da-8aff-a6c51a6490e9","fias_code":"02000001000000000440070","fias_level":"8","fias_actuality_state":"0","kladr_id":"0200000100000440070","geoname_id":"479561","capital_marker":"2","okato":"80401380000","oktmo":"80701000001","tax_office":"0274","tax_office_legal":"0274","timezone":"UTC+5","geo_lat":"54.7315088","geo_lon":"55.9424753","beltway_hit":null,"beltway_distance":null,"metro":null,"qc_geo":"0","qc_complete":null,"qc_house":null,"history_values":null,"unparsed_parts":null,"source":"450015, РЕСПУБЛИКА БАШКОРТОСТАН, Г. УФА, УЛ. КАРЛА МАРКСА, Д.51, К.2","qc":"0"}},"phones":null,"emails":null,"ogrn_date":1032825600000,"okved_type":"2014","employee_count":null}}]}
Я не волшебник, я только учусь...
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 5942
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-ДоМу

libcurl for Clarion

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

Сергей Фурманов писал(а): 03 Март 2022, 9:29 RaFaeL, здравствуйте!
Как-то Вы ошиблись сразу и с темой и с автором ... ;)
А JSON с DaData легко распарсивается штатным классом JSONDataClass -
поищите в формуме, мы много лет тому назад всё это разбирали ... :)
Приносим Вам свои неудобства !
Аватара пользователя
Сергей Фурманов
Прохожий
Сообщения: 4
Зарегистрирован: 28 Ноябрь 2008, 5:56

libcurl for Clarion

Сообщение Сергей Фурманов »

Игорь Столяров писал(а): 03 Март 2022, 9:40 Как-то Вы ошиблись сразу и с темой и с автором
Странно, писал именно этому автору. И именно в этой теме рассматривался похожий вопрос. Вроде как при использовании класса с queue нужно два раза делать прогон. Не могу найти как именно нужно это делать. Искал на форуме, но ничего, кроме этого не нашёл:

ResponseQ Queue !тут надо создать структуру аналогичную ответу сервера
value string(50)
unrestricted_value string(200)
END

PostFields STRING(32768)
respBuffer STRING(32768)
res CURLcode

CODE
Curl &=NEW(TCurlClass)
Curl.Init()

Curl.SetSSLVersion(CURL_SSLVERSION_DEFAULT)
Curl.SetSSLVerifyHost(false)
Curl.SetSSLVerifyPeer(false)

curl.AddHttpHeader('Accept: application/json')
curl.AddHttpHeader('Accept-Charset: utf-8')
curl.AddHttpHeader('Authorization: Token '&API_KEY)
curl.SetHttpHeaders()

PostFields='{ "query": "сбербанк" }' !Здесь не хватает кодировки в UTF-8 см. соседнюю тему, только наоборот

res = curl.SendRequestStr('https://suggestions.dadata.ru/suggestio ... respBuffer)
JSon.FromJSon(respBuffer,ResponseQ)

Первые два параметра (value и unrestricted_value) считывает без проблем. А вот дальше идут группы и с ними проблема. Может быть у кого-то есть рабочая структура группы или очереди для извлечения нужных данных? Или можно как-то "выдернуть" из JSON определённый параметр без закачки всего добра в очередь? Я честно искал, но ничего не нашёл.
Я не волшебник, я только учусь...
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 5942
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-ДоМу

libcurl for Clarion

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

Сергей Фурманов писал(а): 03 Март 2022, 10:02 рабочая структура группы или очереди
Сейчас придёт Дед Пахом и мы много нового о себе узнаем в этой теме ... :(

Если не можете найти в форуме обсуждение - просто опишите структуру
в Clarion по примерам на DaData. И всё. Например:

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

Loc:QResponse      Queue
unrestricted_value   String(1024)       ! * Полное наименование
data                 Group
branch_count           String(10)       ! * Кол-во филиалов
branch_type            String(20)       ! * Тип подразделения MAIN — головная организация, BRANCH — филиал
inn                    String(128)      ! * ИНН
kpp                    String(128)      ! * КПП
ogrn                   String(20)       ! * ОГРН
okpo                   String(20)       ! * Код ОКПО (не заполняется)
okved                  String(20)       ! * Код ОКВЭД
type                   String(20)       ! * Тип организации LEGAL — юридическое лицо; INDIVIDUAL — индивидуальный предприниматель.
okato                  CString(21)      ! Код ОКАТО
oktmo                  CString(21)      ! Код ОКТМО
management             Group
name                     String(128)    ! * ФИО руководителя
post                     String(128)    ! * Должность руководителя
                       end
state                  Group
actuality_date           String(20)     ! * Дата актуальности сведений
registration_date        String(20)     ! * Дата регистрации
liquidation_date         String(20)     ! * Дата ликвидации
status                   String(20)     ! * Статус организации ACTIVE — действующая; LIQUIDATING — ликвидируется; LIQUIDATED — ликвидирована.
                       end
address                Group
unrestricted_value       String(1024)   ! * Адрес
data                     Group
geo_lat                    String(20)   ! Широта
geo_lon                    String(20)   ! Долгота
                         end
                       end
                     end
                   end
Приносим Вам свои неудобства !
Аватара пользователя
Сергей Фурманов
Прохожий
Сообщения: 4
Зарегистрирован: 28 Ноябрь 2008, 5:56

libcurl for Clarion

Сообщение Сергей Фурманов »

Огромное спасибо, Игорь!
Я сам ступил маленько. Забыл, что очередь и файл данных сильно отличаются в плане структуры. Пытался впихнуть queue в list, поэтому и получилась чехарда. Сейчас всё отлично - вписал в структуру очереди только нужные параметры, добавил нужные группы и всё, что хочу, получаю. Единственный нюанс, что приходится избегать служебных слов типа data, short, name и так далее. Использую заменители и External name.
Прошу прощения, если влез не в ту тему. Вы мне правда очень помогли.
Привет Деду Пахому!
Я не волшебник, я только учусь...
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2720
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия
Контактная информация:

libcurl for Clarion

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

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

libcurl for Clarion

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

Обновил до 7.83.0. Задекларировал все CURLOPT_ константы.
С уважением, ДП
Закрыто