post запрос form-data как в postman
помогите сделать запрос form-data нужно правильно передать логин пароль и получить данные json с сервера никак не получается по найденых статьях.
Спасибо.
Запрос HTTP в postman
"POST /api/json/getData/ HTTP/1.1
Host: site.com
Content-Length: 233
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="login"
LoginApi
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="password"
PassApi
----WebKitFormBoundary7MA4YWxkTrZu0gW
Спасибо.
Запрос HTTP в postman
"POST /api/json/getData/ HTTP/1.1
Host: site.com
Content-Length: 233
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="login"
LoginApi
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="password"
PassApi
----WebKitFormBoundary7MA4YWxkTrZu0gW
Прикрепленные файлы:

По теме из базы знаний
- HTTP-клиент
- Обмен с HTTP сервисом файлами по формату multipart/form-data
- Взаимодействие с сотрудниками и клиентами из одного окна конфигурации 1С (Телеграм, ВКонтакте, Facebook, Discord). Преимущества, технические особенности, подводные камни
- Особенности разработки нативного мобильного приложения с бэкендом на 1С
- Подключение к http сервису через multipart/form-data в 1С
Найденные решения
(15) Да, не забудьте повторному запросу установить заголовки и тело добавить, пример как в 8 доработанный.
Соединение = Новый HTTPСоединение("site.com");
Заголовки = Новый Соответствие;
Заголовки.Вставить("Content-Type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW");
Запрос = Новый HTTPЗапрос("/api/json/getData", Заголовки);
СтрокаДляЗапроса = "
|----WebKitFormBoundary7MA4YWxkTrZu0gW
|Content-Disposition: form-data; name=""login""
|
|LoginApi
|----WebKitFormBoundary7MA4YWxkTrZu0gW
|Content-Disposition: form-data; name=""password""
|
|PassApi
|----WebKitFormBoundary7MA4YWxkTrZu0gW";
Запрос.УстановитьТелоИзСтроки(СтрокаДляЗапроса);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
// Обрабатываем перенаправление
Если Ответ.КодСостояния >= 300 и Ответ.КодСостояния < 400 Тогда
Если Ответ.КодСостояния = 302 Тогда
АдресРесурса = Ответ.Заголовки.Получить("Location");
Если АдресРесурса <> Неопределено Тогда
Запрос = Новый HTTPЗапрос(АдресРесурса, Заголовки);
Запрос.УстановитьТелоИзСтроки(СтрокаДляЗапроса);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
КонецЕсли;
КонецЕсли;
КонецЕсли;
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) как-то так:
Соединение = Новый HTTPСоединение("site.com");
Заголовки = Новый Соответствие;
Заголовки.Вставить("Content-Type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW");
Запрос = Новый HTTPЗапрос("/api/json/getData", Заголовки);
СтрокаДляЗапроса = "
|----WebKitFormBoundary7MA4YWxkTrZu0gW
|Content-Disposition: form-data; name=""login""
|
|LoginApi
|----WebKitFormBoundary7MA4YWxkTrZu0gW
|Content-Disposition: form-data; name=""password""
|
|PassApi
|----WebKitFormBoundary7MA4YWxkTrZu0gW";
Запрос.УстановитьТелоИзСтроки(СтрокаДляЗапроса);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
Показать
Код 302
(8)
(8)
(8)
Соединение = Новый HTTPСоединение("site.com");
Заголовки = Новый Соответствие;
Заголовки.Вставить("Content-Type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW");
Запрос = Новый HTTPЗапрос("/api/json/getData", Заголовки);
СтрокаДляЗапроса = "
|----WebKitFormBoundary7MA4YWxkTrZu0gW
|Content-Disposition: form-data; name=""login""
|
|LoginApi
|----WebKitFormBoundary7MA4YWxkTrZu0gW
|Content-Disposition: form-data; name=""password""
|
|PassApi
|----WebKitFormBoundary7MA4YWxkTrZu0gW";
Запрос.УстановитьТелоИзСтроки(СтрокаДляЗапроса);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
ПоказатьЗаголовки = Новый Соответствие;
Заголовки.Вставить("Content-Type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW");
Запрос = Новый HTTPЗапрос("/api/json/getData", Заголовки);
СтрокаДляЗапроса = "
|----WebKitFormBoundary7MA4YWxkTrZu0gW
|Content-Disposition: form-data; name=""login""
|
|LoginApi
|----WebKitFormBoundary7MA4YWxkTrZu0gW
|Content-Disposition: form-data; name=""password""
|
|PassApi
|----WebKitFormBoundary7MA4YWxkTrZu0gW";
Запрос.УстановитьТелоИзСтроки(СтрокаДляЗапроса);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
(8)
(10) попробуйте так:
Соединение = Новый HTTPСоединение("site.com");
boundary = "wL36Yn8afVp8Ag7AmP8qZ0SA4n1v9T";
Заголовки = Новый Соответствие;
Заголовки.Вставить("Content-Type", "multipart/form-data; boundary="+boundary);
Запрос = Новый HTTPЗапрос("/api/json/getData", Заголовки);
МассивЗапроса = Новый Массив;
МассивЗапроса.Добавить("--"+boundary);
МассивЗапроса.Добавить("Content-Disposition: form-data; name=login");
МассивЗапроса.Добавить("");
МассивЗапроса.Добавить("LoginApi");
МассивЗапроса.Добавить("--"+boundary);
МассивЗапроса.Добавить("Content-Disposition: form-data; name=password");
МассивЗапроса.Добавить("");
МассивЗапроса.Добавить("PassApi");
МассивЗапроса.Добавить("--"+boundary+"--");
МассивЗапроса.Добавить("");
СтрокаДляЗапроса = СтрСоединить(МассивЗапроса,Символы.ВК+Символы.ПС);
Запрос.УстановитьТелоИзСтроки(СтрокаДляЗапроса);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
Показать
Запрос.УстановитьТелоИзСтроки(СтрокаДляЗапроса);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
ЗапросА = Новый HTTPЗапрос(Ответ.Заголовки["Location"]);
ОтветА = Соединение.ОтправитьДляОбработки(ЗапросА);
так правильно ?
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
ЗапросА = Новый HTTPЗапрос(Ответ.Заголовки["Location"]);
ОтветА = Соединение.ОтправитьДляОбработки(ЗапросА);
так правильно ?
(15) Да, не забудьте повторному запросу установить заголовки и тело добавить, пример как в 8 доработанный.
Соединение = Новый HTTPСоединение("site.com");
Заголовки = Новый Соответствие;
Заголовки.Вставить("Content-Type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW");
Запрос = Новый HTTPЗапрос("/api/json/getData", Заголовки);
СтрокаДляЗапроса = "
|----WebKitFormBoundary7MA4YWxkTrZu0gW
|Content-Disposition: form-data; name=""login""
|
|LoginApi
|----WebKitFormBoundary7MA4YWxkTrZu0gW
|Content-Disposition: form-data; name=""password""
|
|PassApi
|----WebKitFormBoundary7MA4YWxkTrZu0gW";
Запрос.УстановитьТелоИзСтроки(СтрокаДляЗапроса);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
// Обрабатываем перенаправление
Если Ответ.КодСостояния >= 300 и Ответ.КодСостояния < 400 Тогда
Если Ответ.КодСостояния = 302 Тогда
АдресРесурса = Ответ.Заголовки.Получить("Location");
Если АдресРесурса <> Неопределено Тогда
Запрос = Новый HTTPЗапрос(АдресРесурса, Заголовки);
Запрос.УстановитьТелоИзСтроки(СтрокаДляЗапроса);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
КонецЕсли;
КонецЕсли;
КонецЕсли;
Показать
(16) В boundary что-то не то у вас, прочерков не хватает.
В заголовке должно быть boundary = ххх
В теле:
--ххх
И последний
--ххх--
https://helpf.pro/faq8/view/1298.html
В заголовке должно быть boundary = ххх
В теле:
--ххх
И последний
--ххх--
Получилось, всем спасибо код ниже:
Сервер = "site.com";
Порт = 443;
Логин = "";
Пароль = "";
Сервис = "/api/json/getData/";
Ssl = Новый ЗащищенноеСоединениеOpenSSL();
Прокси = Новый ИнтернетПрокси(Ложь);
СоединениеHTTP = Новый HTTPСоединение(Сервер, Порт, Логин, Пароль, Прокси,,Ssl);
Заголовки = Новый Соответствие;
Заголовки.Вставить("Content-Type","multipart/form-data; boundary=""dcb833ea-be63-4b00-9b57-aa2c0749aa5a""");
ЗапросHTTP = Новый HTTPЗапрос(Сервис, Заголовки);
ТелоЗапроса = "
|
|--dcb833ea-be63-4b00-9b57-aa2c0749aa5a
|Content-Type: text/plain; charset=UTF-8
|Content-Disposition: form-data; name='login'
|
|LoginApi
|--dcb833ea-be63-4b00-9b57-aa2c0749aa5a
|--dcb833ea-be63-4b00-9b57-aa2c0749aa5a
|Content-Type: text/plain; charset=UTF-8
|Content-Disposition: form-data; name='password'
|
|PassApi
|--dcb833ea-be63-4b00-9b57-aa2c0749aa5a--";
ЗапросHTTP.УстановитьТелоИзСтроки(ТелоЗапроса);
Результат = СоединениеHTTP.ОтправитьДляОбработки(ЗапросHTTP);
Если Результат.КодСостояния <> 200 Тогда
//Ошибка выполнения запроса
КонецЕсли;
Данные = Результат.ПолучитьТелоКакСтроку();
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот