Как подготовить и отправить json из 1с?

1. user1041556 18.12.23 12:44 Сейчас в теме
//сформировали данные и отправляем
ЗаписьJSON = Новый ЗаписьJSON;
ПараметрыJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет,"",Истина);	
ЗаписьJSON.УстановитьСтроку(ПараметрыJSON);
ЗаписатьJSON(ЗаписьJSON, СтруктураЗаказа);
СтрокаJS = ЗаписьJSON.Закрыть(); 
Предупреждение("Создали JSON! "+НомерЗаказа1С);
СтрокаРезультат = КодироватьСтроку("site=onlain&order="+СтрокаJS, СпособКодированияСтроки.URLВКодировкеURL);
HTTPМетод= "POST";
ФайлОтвета = "C:\XML\one_answer_orders.txt";
Соединение  = Новый HTTPСоединение("сервер",443,,,,,Новый ЗащищенноеСоединениеOpenSSL());
ЗаголовокЗапросаHTTP = Новый Соответствие();  
ЗаголовокЗапросаHTTP.Вставить("Content-Type", "application/x-www-form-urlencoded");
ЗаголовокЗапросаHTTP.Вставить("X-API-KEY", "ключ");
Запрос = Новый HTTPЗапрос("/api/v5/orders/create", ЗаголовокЗапросаHTTP); 
Запрос.УстановитьТелоИзСтроки(СтрокаРезультат,КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
Попытка
Ответ = Соединение.ВызватьHTTPМетод(HTTPМетод, Запрос, ФайлОтвета);
Предупреждение(Ответ.КодСостояния); 
Исключение
Сообщить(ОписаниеОшибки());  
КонецПопытки; 
Показать


В самописной конфигурации 8.3, беру заказ, пишу его в json и надо отправить в crm.
Получаю ошибки 400, 500 или кучу других, но все сводятся, что ошибка в строке json.
Дело в том, что в php отправка идет на Ура, но там используется модуль с гитхаба,
Скрытый текст

но есть api и сказано, что
POST-запросы
При обращении к API-методам типа POST параметры необходимо отправлять в формате application/x-www-form-urlencoded. При этом если в каком-либо из параметров передается вложенная структура (например, в методе /api/v*/orders/create данные по заказу в параметре order), то значения таких параметров необходимо передавать в виде JSON-строки.

Пример передаваемых данных:

site=simple-site&order=%7B%22externalId%22%3A%22a123%22%2C%22firstName%2­2%3A%22Tom%22%7D


В PHP есть функция http_build_query, которая делает json в правильную строку, в 1с я не знаю аналога, кроме КодироватьСтроку("json", СпособКодированияСтроки.URLВКодировкеURL); и он кодирует неверно, судя по всему, например оставляет двоеточия.

Может есть другие способы получения json сразу в виде строки или можно вовсе обойтись без json, собрав такую строку объединением ключей и значений из запроса?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. glek 119 18.12.23 14:18 Сейчас в теме
(1) Попробуйте попроще:
например просто "УстановитьСтроку" без параметров и не указывать в заголовке Content-Type или использовать связанное с ясоном.
4. spacecraft 18.12.23 15:01 Сейчас в теме
(1)
КодироватьСтроку("json", СпособКодированияСтроки.URLВКодировкеURL)

тут больше подойдет:
КодироватьСтроку(Данныеjson, СпособКодированияСтроки.КодировкаURL)

СтрокаРезультат = "site=onlain&order=" + КодироватьСтроку(СтрокаJS, СпособКодированияСтроки.КодировкаURL);
2. ImHunter 315 18.12.23 14:02 Сейчас в теме
(1) Может, конечно, пальцем в небо. Но можно попробовать XMLСтрока(...).
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот