//Возвращается 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);
КонецПроцедуры
|