POST запрос

8 views
Skip to first unread message

Alex

unread,
Nov 10, 2021, 1:54:49 AM11/10/21
to cla...@googlegroups.com
Добрый день, коллеги.

Обстановка: Clarion 6.3 ШВС
Задача: Отправить POST запрос, получить в json и распарсить ответ.
Вопрос: Существуют ли шаблоны, библиотеки для выполнения этой задачи?
Буду благодарен за любую информацию.

С уважением, Алексей.

Vitaly B

unread,
Nov 10, 2021, 3:07:34 AM11/10/21
to cla...@googlegroups.com
 

Среда, 10 ноября 2021, 16:54 +10:00 от 'Alex' via ClaList <cla...@googlegroups.com>:

 
Добрый день, коллеги.

Обстановка: Clarion 6.3 ШВС
Задача: Отправить POST запрос, получить в json и распарсить ответ.
Вопрос: Существуют ли шаблоны, библиотеки для выполнения этой задачи?
 
попробовать прикрутить JSON.CLW от 10-ки или наконец-то перейти на 10-ку
 
 
--
Vitaly
 

Mike Duglas

unread,
Nov 10, 2021, 3:24:33 AM11/10/21
to clalist форум

ср, 10 нояб. 2021 г. в 09:54, 'Alex' via ClaList <cla...@googlegroups.com>:
--
Вы получили это сообщение, поскольку подписаны на группу ClaList.

Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес clalist+u...@googlegroups.com.
Просмотреть это обсуждение в Сети можно по адресу https://groups.google.com/d/msgid/clalist/95a5d8d2-1dfb-b2c4-1a68-7a4e8ef32685%40rambler.ru.

Igor Smirnov

unread,
Nov 10, 2021, 3:28:08 AM11/10/21
to Mike Duglas

О как! А мужики-то и не знали. :-)

 

Ценный инструмент! Точнее, даже два.

Спасибо!!!

 

Вы писали 10 ноября 2021 г., 11:24:50:


Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/clalist/CAEsQzM61M%3D%3D-bsad8JMS5i6FFvn5j-qiCOEeynn179L1SAM2Zw%40mail.gmail.com.



-- 
С уважением,
 Igor                          mailto:imsm...@gmail.com

Alex

unread,
Nov 10, 2021, 3:31:52 AM11/10/21
to cla...@googlegroups.com


10.11.2021 10:24, Mike Duglas пишет:

Да, спасибо большое за ответ. Нашел Ваш пост на clarionLife.


С кважением, Алексей.

Alex

unread,
Nov 22, 2021, 9:30:38 AM11/22/21
to cla...@googlegroups.com

Добрый день. Воспользовался Вашим советом, Mike, и подключил обе библиотеки к проекту.

1. libcurl работает класно : 5 строчек кода чтобы отправить запрос и получить ответ.

2. cJSON создает json  из GROUP.  Далее столкнулся с проблемой:  root.ToString(FALSE) дает строку '{"docSubType": "2", "sum": 110, "cashierName": "Касир 1"}' , отправляю ее SendRequest-ом, и получаю отлуп сервера (500 - вн ошибка). Если же вместо этой строки отправляю "вручную" сделанную строку  '{{"docSubType": "2", "sum": 110, "cashierName": "Касир 1"}', то сервер отрабатывает корректно. При этом просмотр лога в DebugView показал, что  DATA_OUT содержит абсолютно одинаковые строки. Не подскажите, что нужно подправить?

3. Осталось перекодировать данные. Тут, подключил Ваш winapi (нужен метод ToUtf8  класса TStringEncoding ). При компиляции стал запрашиваться файл print.inc.  Можете пнуть в место, где его можно взять?

С уважением, Алексей.


10.11.2021 10:31, 'Alex' via ClaList пишет:
--
Вы получили это сообщение, поскольку подписаны на группу "ClaList".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес clalist+u...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/clalist/939d4385-78e7-05d0-56a5-474e937c2a32%40rambler.ru.

Alex

unread,
Nov 22, 2021, 10:02:11 AM11/22/21
to cla...@googlegroups.com
В догонку предыдущему моему письму:

22.11.2021 16:30, 'Alex' via ClaList пишет:
> 3. Осталось перекодировать данные. Тут, подключил Ваш winapi (нужен
> метод ToUtf8  класса TStringEncoding ). При компиляции стал
> запрашиваться файл print.inc.  Можете пнуть в место, где его можно взять?
Этот вопрос снимается. В Вашей библиотеке cJSON процедура json::ToUtf8
решила задачу.
>
> С уважением, Алексей.
>
>
>

Mike Duglas

unread,
Nov 22, 2021, 10:16:02 AM11/22/21
to clalist форум
Привет, Алексей,

Вижу, с #3 разобрались, но на всякий случай printf здесь: https://github.com/mikeduglas/printf

По #2: Если сервер ждёт json в utf-8, тогда вместо root.ToString(FALSE) можно попробовать root.ToUtf8(FALSE) .


--
Mike


пн, 22 нояб. 2021 г. в 17:30, 'Alex' via ClaList <cla...@googlegroups.com>:
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/clalist/b9bd999b-a7ec-6287-de77-f24c404828c2%40rambler.ru.

Alex

unread,
Nov 22, 2021, 11:13:29 AM11/22/21
to cla...@googlegroups.com

22.11.2021 17:16, Mike Duglas пишет:
> Привет, Алексей,
>
> Вижу, с #3 разобрались, но на всякий случай printf здесь:
> https://github.com/mikeduglas/printf
Спасибо, уже забрал.
>
> По #2: Если сервер ждёт json в utf-8, тогда вместо
> root.ToString(FALSE) можно попробовать root.ToUtf8(FALSE) .

root.ToUtf8 вторым параметром требует LONG pCodepage. Ставил 1251. Вроде
работает.

Но суть не в кодировке. А вот в чем:
1. в json строке должны быть параметры в camelCase, напр. "docSubType": "2"
2. Поля в Group (InputData) описаны в camelCase
3. Связка root &= json::CreateObject(InputData), root.ToString(false)
дает "docsubtype" - в lowRegister

Вопрос: Не подскажите, как это побороть?

С уважением, Алексей.

Mike Duglas

unread,
Nov 22, 2021, 11:30:28 AM11/22/21
to clalist форум
Самый простой способ: явно указать внешние имена (атрибут NAME), а в json::CreateObject вызвать с параметром pNamesInLowerCase=FALSE.

InputData  GROUP
docSubType  STRING(20), NAME('docSubType')
           END

  root &= json::CreateObject(InputData, FALSE)

Другой вариант: использовать 3-й параметр "options", примерно так:

root &= json::CreateObject(InputData,, '[{{"name" : "docSubType", "jsonname" : "docSubType"}]')

--
Mike


пн, 22 нояб. 2021 г. в 19:13, 'Alex' via ClaList <cla...@googlegroups.com>:
--
Вы получили это сообщение, поскольку подписаны на группу ClaList.

Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес clalist+u...@googlegroups.com.
Просмотреть это обсуждение в Сети можно по адресу https://groups.google.com/d/msgid/clalist/322ddc23-9ea3-4dd1-376d-64672ae58fff%40rambler.ru.

Alex

unread,
Nov 22, 2021, 11:41:41 AM11/22/21
to cla...@googlegroups.com

22.11.2021 18:30, Mike Duglas пишет:
> Самый простой способ: явно указать внешние имена (атрибут NAME), а в
> json::CreateObject вызвать с параметром pNamesInLowerCase=FALSE.
>
> InputData GROUP
> docSubType STRING(20), NAME('docSubType')
>            END
>
> root &= json::CreateObject(InputData, FALSE)

И, ДА!! Это сработало. Ранее переключал "BOOL pNamesInLowerCase = TRUE"
в FALSE, но получал upperCase.

Спасибо Вам большое, очень помогли.

>
> Другой вариант: использовать 3-й параметр "options", примерно так:
>
> root &= json::CreateObject(InputData,, '[{{"name" : "docSubType",
> "jsonname" : "docSubType"}]')
С уважением, Алексей.
Reply all
Reply to author
Forward
0 new messages