Страницы: 1
RSS
V7: Рабочий пример отправки файла json на сайт
 

Коллеги, день добрый. Впервые столкнулся с такой проблемой – как отправить файл формата json? Чем можно проверить, что в результате отсылается на сайте.

 
Цитата
Pavel написал:
Коллеги, день добрый. Впервые столкнулся с такой проблемой – как отправить файл формата json? Чем можно проверить, что в результате отсылается на сайте.
Я бы предложил для начала отправить на свой сайт и там принять его, проверить. Или же еще как вариант такое проделать:

curl.exe +" -X POST сайт: application/json;charset=UTF-8"" --data-binary @"+ИмяФайлаИсходящий+" --output " + ФайлОтвета;

ИмяФайлаИсходящий - твой json с данными.

 

Можно через 1С:Предприятие 7.7 все сделать. Но только в 7.7 хоть так хоть эдак без внешних зависимостей не обойтись, так что вполне нормальный вариант, описанный выше.

Я и через curl отправляла, кстати,  несколько лет а сейчас через ncftp вообще все делаю.

 

Вспомнил тут еще такой вариант – создаем `FormObj()` и вкладываем в него файл и JSON-объект. Используемые технологии: - axios.

Или вот еще. Для начала нужно перевести Результат Запроса в ТаблицуЗначений (ТЗ), затем ТЗ в Массив Структур. И только затем полученный массив сериализуем в JSON. В общем, ничего сложного, код предельно простой у вас получится.

 

Помните, что файл JSON позволяет загружать данные с сервера или на сервер. Например, сохранение содержимого формы, которая была только что заполнена пользователем. Процесс включает три фазы: обработку браузером, обработку сервером, и обмен данными между ними.

Клиентская часть выполняется достаточно просто, так как JSON является частью определения JavaScript. Содержимое файла или определяющих данных назначается переменным и они становятся объектами программы.

Файл JSON используется различными программными языками, включая PHP и Java , благодаря наличию парсеров, которые позволяют получать содержимое и даже конвертировать его в классы и атрибуты языка. Кстати, на сайте JSON можно найти парсеры для многих языков программирования.

Кстати, загрузка файла может быть выполнена в JavaScript несколькими способами:

·         непосредственное включение файла в HTML страницу как внешний JavaScript файл .js.

·         загрузка с помощью команды JavaScript.

·         с использованием XMLHttpRequest.

Отправка файла на сервер может быть выполнена с помощью XMLHttpRequest. Файл отправляется как текстовый и обрабатывается парсером языка программирования, который используется на сервере.

 

Да, добавлю к матчасти предыдущего коммента – JSON по сравнению с XML он является более лаконичным и занимает меньше места. Кроме этого все браузеры имеют встроенные средства для работы с JSON.

JSON активно используется в HTTP интерфейсах. А в 1С:Предприятии как раз есть такие механизмы, в которых хочется использовать этот формат. Это REST интерфейс приложения, автоматически генерируемый платформой, и HTTP-сервисы, которые вы можете создавать самостоятельно

 

Пока читала комменты, решила таки поделиться простым кодом отправки данных:

//здесь выполняем запрос, в котором есть данные о нашых товарах (код товара (sku),

//Наименование товара(name), цена(price) и остаток(qty))

Результат = Запрос.Выполнить();

   ВыборкаДетальныеЗаписи = Результат.Выбрать();

   //Создали запись ЗаписьJSON

   ЗаписьJSON = Новый ЗаписьJSON;

   //Задаем параметры без переноса строк, можно и с переносом, как кому нравится

   тПараметрыJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет, " ", Истина);

   ЗаписьJSON.УстановитьСтроку(тПараметрыJSON);

   

   МассивДанныхJSON = Новый Массив;

   СтруктураДанныхJSON = Новый Структура;

   //Выбираем данные из запроса и записываем в массив "МассивДанныхJSON"      

   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

      // Каждая запись товара у нас отдельная структура...

             тДанные = Новый Структура;

               тДанные.Вставить("sku", ВыборкаДетальныеЗаписи.sku);

               тДанные.Вставить("name", ВыборкаДетальныеЗаписи.name);

               тДанные.Вставить("price", ВыборкаДетальныеЗаписи.price);

               тДанные.Вставить("qty", ВыборкаДетальныеЗаписи.qty);

      //Добавляем структуру с информацией о товаре в наш массив "МассивДанныхJSON"

              МассивДанныхJSON.Добавить(тДанные);

               

   КонецЦикла;    

   // вставляем наш массив в ещеодну структуру

   СтруктураДанныхJSON.Вставить("test", МассивДанныхJSON);

   ЗаписатьJSON(ЗаписьJSON, СтруктураДанныхJSON);

   //Здесь нам платформа переделала нашу сложную структуру в строку данных в формате JSON

   СтрокаJS = ЗаписьJSON.Закрыть();

   //В этот файл для примера наш сайт сформирует ответ после отправки на него данных методом POST

   ФайлОтвета = КаталогВременныхФайлов()+ "\answer.txt";

   //здесь надо указать путь к сайту

   HTTPСоединение = Новый HTTPСоединение("mysite.com/download.php");

   //создаем запрос данных методом POST

   запросPOST = Новый HTTPЗапрос("POST");

//это обязательный заголовок тела запроса

   запросPOST.Заголовки.Вставить("Content-type", "application/x-www-form-urlencoded");

//Здесь задаем текст нашей отформатированной строки + задаем формат сроки

   запросPOST.УстановитьТелоИзСтроки("mData="+СтрокаJS,"windows-1251",ИспользованиеByteOrderMark.НеИспользовать);

   Попытка

//Отправляем для обрааботки на наш сервер

       HTTPСоединение.ОтправитьДляОбработки(запросPOST, ФайлОтвета);

   Исключение

       #Если клиент Тогда

          Сообщить(ОписаниеОшибки());

       #КонецЕсли  

   КонецПопытки;

Страницы: 1