libcurl for Clarion

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

libcurl for Clarion

Сообщение gopstop2007 » 25 Октябрь 2018, 21:16

Решил в первый раз попробовать libcurl. :)
Новая Почта, пример с использованием api (JSON) на странице, https://devcenter.novaposhta.ua/docs/se ... 67/console

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

curl        TCurlClass
host        STRING('http://testapi.novaposhta.ua/v2.0/json/Address/searchSettlements/')
postparams  STRING('{{"apiKey": "","modelName": "Address","calledMethod": "searchSettlements","methodProperties": {{"CityName": "київ","Limit": 5}}')
res         CURLcode, AUTO
respBuffer  STRING(32768) !big enuff to hold received response

  CODE  
  curl.Init()

  curl.AddHttpHeader('Content-Type: application/json')  !- or 'Content-Type: text/json'            
  curl.SetHttpHeaders()
  curl.SetCustomRequest('POST')
  curl.SetHttpGET(TRUE)

  curl.SetSSLVerifyHost(false)  
  curl.SetSSLVerifyPeer(FALSE) 
  
  ! set ssl version (see CURL_SSLVERSION_xxx constants)
  curl.SetSSLVersion(CURL_SSLVERSION_DEFAULT)
    
  res = curl.SendRequest(host, PostParams, 'rest.txt')
  
  IF res = CURLE_OK
    ! OK
  ELSIF res = -1 
    MESSAGE('Cannot open local file', 'libcurl', ICON:Exclamation)
  ELSE
    MESSAGE('SendRequest failed: '& curl.StrError(res), 'libcurl', ICON:Exclamation)
  END
Содержимое ответа с сервера

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

{"success":false,"data":[],"errors":["Data is invalid"],"warnings":[],"info":[],"messageCodes":[],"errorCodes":[],"warningCodes":[],"infoCodes":[]}
Запрос проходит без ошибок, но данных по запросу нет. :(
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп

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

libcurl for Clarion

Сообщение Дед Пахом » 25 Октябрь 2018, 21:45

в чём вопрос-то?
С уважением, ДП

gopstop2007
Ветеран
Сообщения: 1136
Зарегистрирован: 25 Март 2009, 21:55

libcurl for Clarion

Сообщение gopstop2007 » 25 Октябрь 2018, 23:35

Дед Пахом писал(а):
25 Октябрь 2018, 21:45
в чём вопрос-то?
на вышеуказанной странице, есть кнопка "отправить", после нажатия которой выводится содержимое ответа на запрос и он отличается от моего, вот оно:

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

Pragma: no-cache
Transfer-Encoding: chunked
Vary: Accept-Encoding
Cache-Control: no-store, must-revalidate, no-cache, post-check=0, pre-check=0
Date: Thu, 25 Oct 2018 17:35:07 GMT
Set-Cookie: PHPSESSID=7msaf4scj870vb2lsse2euhcg0; path=/
Content-Type: application/json
Expires: Thu, 19 Nov 1981 08:52:00 GMT

{
  "success": true,
  "data": [{
    "TotalCount": 9,
    "Addresses": [{
      "Present": "\u043c. \u041a\u0438\u0457\u0432, \u041a\u0438\u0457\u0432\u0441\u044c\u043a\u0430 \u043e\u0431\u043b.",
      "Warehouses": 471,
      "MainDescription": "\u041a\u0438\u0457\u0432",
      "Area": "\u041a\u0438\u0457\u0432\u0441\u044c\u043a\u0430",
      "Region": "",
      "SettlementTypeCode": "\u043c.",
      "Ref": "e718a680-4b33-11e4-ab6d-005056801329",
      "DeliveryCity": "8d5a980d-391c-11dd-90d9-001a92567626",
      "StreetsAvailability": true,
      "ParentRegionTypes": "\u043e\u0431\u043b\u0430\u0441\u0442\u044c",
      "ParentRegionCode": "\u043e\u0431\u043b.",
      "RegionTypes": "",
      "RegionTypesCode": ""
    }, {
      "Present": "\u0441. \u041a\u0438\u0457\u0432, \u0414\u043e\u043c\u0430\u043d\u0456\u0432\u0441\u044c\u043a\u0438\u0439 \u0440-\u043d, \u041c\u0438\u043a\u043e\u043b\u0430\u0457\u0432\u0441\u044c\u043a\u0430 \u043e\u0431\u043b.",
      "Warehouses": 0,
      "MainDescription": "\u041a\u0438\u0457\u0432",
      "Area": "\u041c\u0438\u043a\u043e\u043b\u0430\u0457\u0432\u0441\u044c\u043a\u0430",
      "Region": "\u0414\u043e\u043c\u0430\u043d\u0456\u0432\u0441\u044c\u043a\u0438\u0439",
      "SettlementTypeCode": "\u0441.",
      "Ref": "0db2df4b-4b3a-11e4-ab6d-005056801329",
      "DeliveryCity": "06f8795a-4079-11de-b509-001d92f78698",
      "StreetsAvailability": false,
      "ParentRegionTypes": "\u043e\u0431\u043b\u0430\u0441\u0442\u044c",
      "ParentRegionCode": "\u043e\u0431\u043b.",
      "RegionTypes": "\u0440\u0430\u0439\u043e\u043d",
      "RegionTypesCode": "\u0440-\u043d"
    }, {
      "Present": "\u0441. \u041a\u0438\u0457\u0432\u0435\u0446\u044c, \u041c\u0438\u043a\u043e\u043b\u0430\u0457\u0432\u0441\u044c\u043a\u0438\u0439 \u0440-\u043d, \u041b\u044c\u0432\u0456\u0432\u0441\u044c\u043a\u0430 \u043e\u0431\u043b.",
      "Warehouses": 0,
      "MainDescription": "\u041a\u0438\u0457\u0432\u0435\u0446\u044c",
      "Area": "\u041b\u044c\u0432\u0456\u0432\u0441\u044c\u043a\u0430",
      "Region": "\u041c\u0438\u043a\u043e\u043b\u0430\u0457\u0432\u0441\u044c\u043a\u0438\u0439",
      "SettlementTypeCode": "\u0441.",
      "Ref": "0df25497-4b3a-11e4-ab6d-005056801329",
      "DeliveryCity": "acecfca8-1488-11df-8caf-000c2965ae0e",
      "StreetsAvailability": false,
      "ParentRegionTypes": "\u043e\u0431\u043b\u0430\u0441\u0442\u044c",
      "ParentRegionCode": "\u043e\u0431\u043b.",
      "RegionTypes": "\u0440\u0430\u0439\u043e\u043d",
      "RegionTypesCode": "\u0440-\u043d"
    }, {
      "Present": "\u0441. \u041a\u0438\u0457\u0432\u043a\u0430, \u0413\u043e\u043b\u043e\u043f\u0440\u0438\u0441\u0442\u0430\u043d\u0441\u044c\u043a\u0438\u0439 \u0440-\u043d, \u0425\u0435\u0440\u0441\u043e\u043d\u0441\u044c\u043a\u0430 \u043e\u0431\u043b.",
      "Warehouses": 0,
      "MainDescription": "\u041a\u0438\u0457\u0432\u043a\u0430",
      "Area": "\u0425\u0435\u0440\u0441\u043e\u043d\u0441\u044c\u043a\u0430",
      "Region": "\u0413\u043e\u043b\u043e\u043f\u0440\u0438\u0441\u0442\u0430\u043d\u0441\u044c\u043a\u0438\u0439",
      "SettlementTypeCode": "\u0441.",
      "Ref": "0dd153b3-4b3a-11e4-ab6d-005056801329",
      "DeliveryCity": "db5c88e7-391c-11dd-90d9-001a92567626",
      "StreetsAvailability": false,
      "ParentRegionTypes": "\u043e\u0431\u043b\u0430\u0441\u0442\u044c",
      "ParentRegionCode": "\u043e\u0431\u043b.",
      "RegionTypes": "\u0440\u0430\u0439\u043e\u043d",
      "RegionTypesCode": "\u0440-\u043d"
    }, {
      "Present": "\u0441. \u041a\u0438\u0457\u0432\u0441\u044c\u043a\u0435, \u041d\u043e\u0432\u043e\u043c\u0438\u043a\u043e\u043b\u0430\u0457\u0432\u0441\u044c\u043a\u0438\u0439 \u0440-\u043d, \u0417\u0430\u043f\u043e\u0440\u0456\u0437\u044c\u043a\u0430 \u043e\u0431\u043b.",
      "Warehouses": 0,
      "MainDescription": "\u041a\u0438\u0457\u0432\u0441\u044c\u043a\u0435",
      "Area": "\u0417\u0430\u043f\u043e\u0440\u0456\u0437\u044c\u043a\u0430",
      "Region": "\u041d\u043e\u0432\u043e\u043c\u0438\u043a\u043e\u043b\u0430\u0457\u0432\u0441\u044c\u043a\u0438\u0439",
      "SettlementTypeCode": "\u0441.",
      "Ref": "0e40bf5a-4b3a-11e4-ab6d-005056801329",
      "DeliveryCity": "cfbeaca4-4063-11de-b509-001d92f78698",
      "StreetsAvailability": false,
      "ParentRegionTypes": "\u043e\u0431\u043b\u0430\u0441\u0442\u044c",
      "ParentRegionCode": "\u043e\u0431\u043b.",
      "RegionTypes": "\u0440\u0430\u0439\u043e\u043d",
      "RegionTypesCode": "\u0440-\u043d"
    }]
  }],
  "errors": [],
  "warnings": [],
  "info": [],
  "messageCodes": [],
  "errorCodes": [],
  "warningCodes": [],
  "infoCodes": []
}
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп

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

libcurl for Clarion

Сообщение Дед Пахом » 25 Октябрь 2018, 23:41

gopstop2007 писал(а):
25 Октябрь 2018, 21:16
"errors":["Data is invalid"]
Вот это по-моему ясно говорит, что с исходными данными что-то не так. Возможно, apiKey должен быть непустым (на сайте так и написано).
С уважением, ДП

gopstop2007
Ветеран
Сообщения: 1136
Зарегистрирован: 25 Март 2009, 21:55

libcurl for Clarion

Сообщение gopstop2007 » 26 Октябрь 2018, 11:03

Не требует ключа, на Postman проходит без проблем
Вложения
post_man.jpg
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп

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

libcurl for Clarion

Сообщение Дед Пахом » 26 Октябрь 2018, 11:13

не знаю, жму Отправить и получаю "Your request is wrong. Refer to the documentation <a href="https://devcenter.novaposhta.ua">devcenter.novaposhta.ua</a>"
С уважением, ДП

gopstop2007
Ветеран
Сообщения: 1136
Зарегистрирован: 25 Март 2009, 21:55

libcurl for Clarion

Сообщение gopstop2007 » 26 Октябрь 2018, 11:19

Дед Пахом писал(а):
26 Октябрь 2018, 11:13
не знаю, жму Отправить и получаю "Your request is wrong. Refer to the documentation <a href="https://devcenter.novaposhta.ua">devcenter.novaposhta.ua</a>"
Выберите на станице выше формат - json, чтобы Request URL стал таким
http://testapi.novaposhta.ua/v2.0/json/Address/searchSettlements/
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп

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

libcurl for Clarion

Сообщение Дед Пахом » 26 Октябрь 2018, 12:05

А не знаю, может с кириллицей что-то не то. Задаю город kiev, ругается одинаково что в libcurl, что в postman.
С уважением, ДП

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

libcurl for Clarion

Сообщение Дед Пахом » 26 Октябрь 2018, 13:16

Гы, заставил-таки её работать через юникод:

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

postparams                      STRING('{{"apiKey": "","modelName": "Address","calledMethod": "searchSettlements","methodProperties": {{"CityName": "\u043A\u0438\u0457\u0432","Limit": 5}}')
С уважением, ДП

gopstop2007
Ветеран
Сообщения: 1136
Зарегистрирован: 25 Март 2009, 21:55

libcurl for Clarion

Сообщение gopstop2007 » 26 Октябрь 2018, 13:45

Дед Пахом писал(а):
26 Октябрь 2018, 13:16
Гы, заставил-таки её работать через юникод:
Спасибо огромное, без вашей помощи вряд ли решилось бы )
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп

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

libcurl for Clarion

Сообщение Дед Пахом » 26 Октябрь 2018, 13:52

Так как ответ сервера тоже в юникоде, можешь попробовать разбирать json с помощью cJSON, она разруливает все эти "\u043A"
С уважением, ДП

gopstop2007
Ветеран
Сообщения: 1136
Зарегистрирован: 25 Март 2009, 21:55

libcurl for Clarion

Сообщение gopstop2007 » 26 Октябрь 2018, 15:02

Дед Пахом писал(а):
26 Октябрь 2018, 13:52
Так как ответ сервера тоже в юникоде, можешь попробовать разбирать json с помощью cJSON, она разруливает все эти "\u043A"
Набрал в поиске cJSON и что видим :D , спасибо, будут вопросы буду знать к кому обратиться :)
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп

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

libcurl for Clarion

Сообщение Дед Пахом » 26 Октябрь 2018, 16:41

Обновил до v1.38.
С уважением, ДП

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

libcurl for Clarion

Сообщение Дед Пахом » 30 Октябрь 2018, 19:00

Обновил до v1.39:
CHG: Now uses libcurl v7.61.1, see changelog for details.
curl 7.61.1_8 was built and statically linked with

OpenSSL 1.1.1
brotli 1.0.7
libssh2 1.8.0
nghttp2 1.34.0
zlib 1.2.11
С уважением, ДП

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

libcurl for Clarion

Сообщение Игорь Столяров » 06 Ноябрь 2018, 17:14

Дед Пахом писал(а):
30 Октябрь 2018, 19:00
Обновил до v1.39:
Добрый день !

Ну тогда, как говорят наши юзеры "плизе хелп !" :)

Если собрать ЛЮБОЙ пример и скопировать в папку программы DLL библиотеки из этого же из комплекта
версий v7.40 / v7.52.1 то получаем однозначную ошибку (не зависимо от версии Windows):

HZ.jpg

Возникает вопрос, зачем копировали ? Дело в том, что при работе под WinXP возникает проблема со сборкой
библиотеки "Normaliz.dll не найден" (я её описывал ранее). До последнего обновления версии LibCurl вопрос
решали простым копированием файлов библиотеки версий v7.40 в папку программы. Теперь - фиг. :(

Как теперь жить тем кто юзает WinXP ? :( Заранее спасибо за помощь и посильное содействие. :)
«V» значит Вендетта !

Ответить