post запрос form-data как в postman

1. tt33 12.05.21 13:19 Сейчас в теме
помогите сделать запрос 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
Прикрепленные файлы:
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
16. Fox_1n 12.05.21 17:07 Сейчас в теме
(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Запрос(АдресРесурса, Заголовки);
                                  
                                  Запрос.УстановитьТелоИзСтроки(СтрокаДляЗапроса);
                                  Ответ = Соединение.ОтправитьДляОбработки(Запрос);
			  КонецЕсли;
		 КонецЕсли;
КонецЕсли;
Показать
user1806897; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
8. spacecraft 12.05.21 14:21 Сейчас в теме
(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";
    
Запрос.УстановитьТелоИзСтроки(СтрокаДляЗапроса);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
Показать
10. tt33 12.05.21 14:28 Сейчас в теме
Код 302

(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";

Запрос.УстановитьТелоИзСтроки(СтрокаДляЗапроса);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
Показать

(8)
12. spacecraft 12.05.21 14:38 Сейчас в теме
(10) так данные ответа показывайте. 302 это перенаправление. Возможно нужно https использовать.
18. spacecraft 12.05.21 19:51 Сейчас в теме
(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+"--");
МассивЗапроса.Добавить("");

СтрокаДляЗапроса = СтрСоединить(МассивЗапроса,Символы.ВК+Символы.ПС);
    
Запрос.УстановитьТелоИзСтроки(СтрокаДляЗапроса);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
Показать
2. Aitbay 12.05.21 13:46 Сейчас в теме
HTTPЗапрос.Заголовки.Вставить("Content-Type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW");
и так повторить все заголовки
3. Fox_1n 12.05.21 13:48 Сейчас в теме
Что именно не получается? У вас код ответа 200 и тело не пустое на скрине, запрос правильно написан или вопрос как это сделать в 1с?
user1806897; +1 Ответить
4. tt33 12.05.21 13:50 Сейчас в теме
(3)так точно нужно в 1с зделать , у меня в 1с код 500
5. Fox_1n 12.05.21 14:04 Сейчас в теме
(4) HTTPСоединение в 1с устанавливается?
user1806897; +1 Ответить
6. tt33 12.05.21 14:09 Сейчас в теме
7. Fox_1n 12.05.21 14:17 Сейчас в теме
(6) Пробовали отправить пустой запрос по типу HTTPЗапрос("/"), будет код 200?
user1806897; +1 Ответить
9. tt33 12.05.21 14:23 Сейчас в теме
(7)
HTTPЗапрос
в ответ код 302
11. Fox_1n 12.05.21 14:37 Сейчас в теме
(9) ну это уже результат, обрабатывайте редирект, это повторный запрос, только путь из заголовка Location
user1806897; +1 Ответить
13. tt33 12.05.21 14:58 Сейчас в теме
(11)
Location
повторний запрос с Location ?
14. Fox_1n 12.05.21 15:11 Сейчас в теме
(13) да, так как это редирект, в структуре ответа в заголовках должен быть путь редиректа, это выглядит так

Запрос = Новый HTTPЗапрос(Ответ.Заголовки["Location"]);


киньте повторный запрос, должен быть код 200
user1806897; +1 Ответить
15. tt33 12.05.21 15:46 Сейчас в теме
Запрос.УстановитьТелоИзСтроки(СтрокаДляЗапроса);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
ЗапросА = Новый HTTPЗапрос(Ответ.Заголовки["Location"]);
ОтветА = Соединение.ОтправитьДляОбработки(ЗапросА);

так правильно ?
16. Fox_1n 12.05.21 17:07 Сейчас в теме
(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Запрос(АдресРесурса, Заголовки);
                                  
                                  Запрос.УстановитьТелоИзСтроки(СтрокаДляЗапроса);
                                  Ответ = Соединение.ОтправитьДляОбработки(Запрос);
			  КонецЕсли;
		 КонецЕсли;
КонецЕсли;
Показать
user1806897; +1 Ответить
17. Sashares 34 12.05.21 17:27 Сейчас в теме
(16) В boundary что-то не то у вас, прочерков не хватает.
В заголовке должно быть boundary = ххх
В теле:
--ххх
И последний
--ххх--

https://helpf.pro/faq8/view/1298.html
19. tt33 12.05.21 22:35 Сейчас в теме
Получилось, всем спасибо код ниже:

	Сервер = "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 Тогда
   //Ошибка выполнения запроса
КонецЕсли;

Данные = Результат.ПолучитьТелоКакСтроку();
Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот