|
0
wannasleep
26.05.23
✎
14:05
|
Параметры в POST запросе к api передаются в формате form-data. В postman я передаю параметры в формате имяПараметра-значение. Вопрос в том, как передать эти параметры в 1с. В интернете наткнулся на передачу картинок, но не понял как это адаптировать под мои параметры
|
|
|
3
OldCondom
26.05.23
✎
14:16
|
Заголовки = Новый Соответствие;
Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded");
Запрос = Новый HTTPЗапрос(Адрес, Заголовки)
Запрос.УстановитьТелоИзСтроки(&Парам1=ЗначениеПарам1&Парам2=ЗначениеПарам2)
Так вроде работает.
|
|
|
4
Anton1307
26.05.23
✎
16:23
|
СтруктураФайла = Новый Структура;
СтруктураФайла.Вставить("ИмяФайла", "имяфайла.jpg");
СтруктураФайла.Вставить("ТипДанных", "image/jpeg");
СтруктураФайла.Вставить("Данные", Новый ДвоичныеДанные("C:\photo.jpg"));
ДанныеЗапроса = Новый Соответствие;
ДанныеЗапроса["param1"] = 123.45;
ДанныеЗапроса["param2"] = "Это строковый параметр";
ДанныеЗапроса["param3"] = Истина;
ДанныеЗапроса["file"] = СтруктураФайла;
Разделитель = "AAA_" + СтрЗаменить(Новый УникальныйИдентификатор, "-", "") + "_BBB";
Поток = Новый ПотокВПамяти;
ЗаписьДанных = Новый ЗаписьДанных(Поток,,, Символы.ВК + Символы.ПС, "");
Для каждого Элемент Из ДанныеЗапроса Цикл
ЗаписьДанных.ЗаписатьСтроку("--" + Разделитель);
Имя = Элемент.Ключ;
Данные = Элемент.Значение;
Если ТипЗнч(Данные) <> Тип("Структура") Тогда
// Записываем обычный параметр (строка, число, булево)
ЗаписьДанных.ЗаписатьСтроку("Content-Disposition: form-data; name=""" + Имя + """");
ЗаписьДанных.ЗаписатьСтроку("");
ЗаписьДанных.ЗаписатьСтроку(XMLСтрока(Данные));
Иначе
// Записываем двоичные данные файла
ЗаписьДанных.ЗаписатьСтроку("Content-Disposition: form-data; name=""" + Имя + """; filename=""" + Данные.ИмяФайла + """");
ЗаписьДанных.ЗаписатьСтроку("Content-Type: " + Данные.ТипДанных);
ЗаписьДанных.ЗаписатьСтроку("");
Если ТипЗнч(Данные.Данные) = Тип("Строка") Тогда
ЗаписьДанных.ЗаписатьСтроку(Данные.Данные);
Иначе
ЗаписьДанных.Записать(Данные.Данные);
КонецЕсли;
ЗаписьДанных.ЗаписатьСтроку("");
КонецЕсли;
КонецЦикла;
ЗаписьДанных.ЗаписатьСтроку("--" + Разделитель + "--");
ЗаписьДанных.Закрыть();
ТелоЗапроса = Поток.ЗакрытьИПолучитьДвоичныеДанные();
// Отправляем запрос
Заголовки = Новый Соответствие;
Заголовки["Content-Type"] = "multipart/form-data; boundary=" + Разделитель;
Заголовки["Content-Length"] = XMLСтрока(ТелоЗапроса.Размер());
Соединение = Новый HTTPСоединение(...);
Запрос = Новый HTTPЗапрос(..., Заголовки);
Запрос.УстановитьТелоИзДвоичныхДанных(ТелоЗапроса);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
|
|