В начало

Формирование ответа по заявке

 

            Необходимо перевести заявку из статуса «В работе» в статус «Ожидает подтверждения».

 

 

Таблица. Описание метода POST /api/claim/answer,
формат передачи данных
multipart/form-data

Параметр

Обязательный

Описание

claimId

Да

(id заявки

answerId

Да

id ответа

answerComment

Да

комментарий

files

Нет

список uuid загруженных файлов через запятую.

Параметры uuid имеют тип УИД и формируются при загрузке файлов на сайт методом «POST /api/file»

 

            Пример по составному типу содержимого «multipart/form-data» можно подсмотреть здесь: https://its.1c.ru/db/metod8dev#content:5917:hdoc:http-messages

https://its.1c.ru/db/metod8dev/content/5917/hdoc

 

Листинг. Пример текста запроса с содержимым «multipart/form-data»

HTTP/1.1 200 OK

 

  Content-Length: 1559385

 

  Content-Type: multipart/form-data; boundary=Asrf456BGe4h

  Server: Microsoft-IIS/7.5

  X-Powered-By: ASP.NET

  Date: Fri, 25 Dec 2015  12:27:00 GMT

 

  <Пустая строка>==Asrf456BGe4h

  Content-Disposition:  form-data; name=MessageText

  <Пустая  строка>

  Некий текст

  .==Asrf456BGe4h

 

  Content-Disposition:  form-data; name=image1; filename=auto.jpg

  Content-Type:  image/jpeg

  <Пустая строка>

 

  <Двоичные данные первой картинки>==Asrf456BGe4h

  Content-Disposition:  form-data; name=image2; filename=metro.jpg

  Content-Type:  image/jpeg

  <Пустая строка>

  <Двоичные данные  второй картинки>==Asrf456BGe4h==

 

Листинг. Пример использования

//Возвращается HTTP-сообщение в формате [ДвоичныеДанные]

Функция ТекстВДвоичныеДанные(ИмяСообщения, Текст)

           

            Поток = Новый ПотокВПамяти();

            ЗаписьДанных = Новый ЗаписьДанных(Поток);

            // Заголовки

            ЗаписьДанных.ЗаписатьСтроку("Content-Disposition: form-data; name=" + ИмяСообщения);

            ЗаписьДанных.ЗаписатьСтроку("");

            // Тело

            ЗаписьДанных.ЗаписатьСтроку(Текст);

            ЗаписьДанных.Закрыть();

           

            Возврат Поток.ЗакрытьИПолучитьДвоичныеДанные();

           

КонецФункции

 

&НаСервере

Процедура ПубликацияОтветаПоЗаявкеНаСервере(Знач claimId, Знач answerId, Знач answerComment, Знач files)

            Адрес = "eds.mosreg.ru";               

            Соединение = Новый HTTPСоединение(Адрес, 443,,,,30, Новый ЗащищенноеСоединениеOpenSSL);  

           

            Запрос = Новый HTTPЗапрос("/login?login-form-email=" + "1234" + "&login-form-password=" + "2345");//Жилсервис

           

            Ответ = Соединение.ВызватьHTTPМетод("POST", Запрос);    

           

            Если Ответ.КодСостояния = 200 Тогда

                        Куки = Ответ.Заголовки.Получить("Set-Cookie");

                        Куки = СтрЗаменить(Куки, ";", Символы.ПС);

                        Куки = СтрЗаменить(Куки, ",", Символы.ПС);

                        MosregToken = СтрПолучитьСтроку(Куки, 1);                 

                        JSessionID =  СокрЛП(СтрПолучитьСтроку(Куки, 5));

                       

                        ЧтениеJSON = Новый ЧтениеJSON();

                        ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8));

                        Ответ1 = ПрочитатьJSON(ЧтениеJSON);

                        ЧтениеJSON.Закрыть();

                       

                        //////////////////////////////////////////////////////

                        //2-й запрос - формирование ОТВЕТА по заявке

                        Заголовки = Новый Соответствие;             

                        Разделитель = "Asrf456BGe4h";

                        Заголовки.Вставить("Cookie", JSessionID + ";" + MosregToken); 

                        Заголовки.Вставить("Content-Type", "multipart/form-data; boundary=" + Разделитель);

                       

                        Запрос2 = Новый HTTPЗапрос("/api/claim/answer", Заголовки); 

                       

                        Тело = Новый ПотокВПамяти();

                       

                        ЗаписьДанных = Новый ЗаписьДанных(Тело);              

                        ЗаписьДанных.ЗаписатьСтроку("--" + Разделитель);

                        ЗаписьДанных.Записать(ТекстВДвоичныеДанные("claimId", claimId));       

                        ЗаписьДанных.ЗаписатьСтроку("--" + Разделитель); 

                        ЗаписьДанных.Записать(ТекстВДвоичныеДанные("answerId", answerId));

                        ЗаписьДанных.ЗаписатьСтроку("--" + Разделитель);                 

                        ЗаписьДанных.Записать(ТекстВДвоичныеДанные("answerComment", answerComment));                 

                        ЗаписьДанных.ЗаписатьСтроку("--" + Разделитель);                 

                        ЗаписьДанных.Записать(ТекстВДвоичныеДанные("files", files));

                        ЗаписьДанных.ЗаписатьСтроку("--" + Разделитель + "--");

                        ЗаписьДанных.Закрыть();

                       

                        ТелоЗапроса = Тело.ЗакрытьИПолучитьДвоичныеДанные();

                       

                        Запрос2.УстановитьТелоИзДвоичныхДанных(ТелоЗапроса);//для multipart/form-data

                       

                        Ответ2 = Соединение.ВызватьHTTPМетод("POST", Запрос2);   

                       

                       

                        Если Ответ2.КодСостояния = 200 Тогда

                                  

                                   ЧтениеJSON = Новый ЧтениеJSON();

                                    ЧтениеJSON.УстановитьСтроку(Ответ2.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8));

                                   Ответ22 = ПрочитатьJSON(ЧтениеJSON);

                                   ЧтениеJSON.Закрыть();

                                  

                                   Сообщить(Ответ22.message);

                        Иначе   

                                   Сообщить("Запрос 2, ошибка: " + Ответ2.КодСостояния);

                        КонецЕсли;

                       

            Иначе

                        Сообщить("Запрос 1, ошибка " + Ответ.КодСостояния);

            КонецЕсли;

КонецПроцедуры

 

&НаКлиенте

Процедура ПубликацияОтветаПоЗаявке(Команда)   

            claimId = "34567";

            answerId = "4567";

            answerComment = "Текст ответа ";

            files = "";

                    

            ПубликацияОтветаПоЗаявкеНаСервере(claimId, answerId, answerComment, files);

КонецПроцедуры

 

Рис. Тело запроса в отладчике