ЗапросHTTP и body x-www-form-urlencoded

1. fedor40 706 13.09.23 13:46 Сейчас в теме
Запрос отрабатывает в Postman, но не могу написать его в 1С.

Код результата запроса: 400

В чем тут ошибка ?

    СоединениеHTTP = Новый HTTPСоединение("ws.lwo.by:8243",,"2022020202","111111",,,Новый ЗащищенноеСоединениеOpenSSL()); 
	
	ЗаголовокHTTP = Новый Соответствие();   
	ЗаголовокHTTP.Вставить("Authorization", СоздатьСтрокуАвторизации());      
	ЗаголовокHTTP.Вставить("Content-Type", "application/x-www-form-urlencoded");      
	
Боди = "grant_type=password&scope=openid&username=2022020202&passwo­rd=111111";
	
	ЗапросHTTP = Новый HTTPЗапрос("/token", ЗаголовокHTTP); 
	
	ЗапросHTTP.УстановитьТелоИзСтроки(Боди);
	
    РезультатЗапроса = СоединениеHTTP.ОтправитьДляОбработки(ЗапросHTTP); 
	
	Сообщить("Код результата запроса: " + РезультатЗапроса.КодСостояния);
	
	Если РезультатЗапроса.КодСостояния < 202 Тогда
		
		ЧтениеJSON = Новый ЧтениеJSON;
		ЧтениеJSON.УстановитьСтроку(РезультатЗапроса.ПолучитьТелоКакСтроку());	
		Структура = ПрочитатьJSON(ЧтениеJSON);
		Возврат Структура.shiftNumber
	Иначе
		Возврат 0
	КонецЕсли
Показать
user635629_exter; +1 Ответить
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Sashares 35 13.09.23 14:00 Сейчас в теме
(1)
СоединениеHTTP = Новый HTTPСоединение("ws.lwo.by:8243",,"2022020202","111111",,,Новый ЗащищенноеСоединениеOpenSSL());


Порт уберите из адреса сервиса, и укажите в нужном месте.
3. fedor40 706 13.09.23 20:57 Сейчас в теме
(2) СоединениеHTTP проходит. Думаю в порте нет ошибки.
4. Sashares 35 13.09.23 21:19 Сейчас в теме
(3)
Думаю в порте нет ошибки.

А на основании чего вы делаете это утверждение?

Вы например синтакс помощник смотрели?
Ну так, к слову.
Новый HTTPСоединение(<Сервер>, <Порт>, <Пользователь>, <Пароль>, <Прокси>, <ЗащищенноеСоединение>)
Порт - Порт сервера, с которым осуществляется соединение.
Значение по умолчанию для HTTP соединений равно 80, для защищенных HTTPS соединений - 443.
Значение по умолчанию: порт по умолчанию для используемого протокола.


У вас в адресе указан порт 8243.
Если это правильный порт, то есть сейчас как минимум:
1 - ошибка в адресе сервера, должно быть "ws.lwo.by"
2 - обращение выполняется по порту по умолчанию - 443, вместо требуемого 8243

А вообще, если есть рабочий запрос, например, в Postman, то ставите Fiddler и сравниваете рабочий RAW с RAW из 1С.
Fox-trot; aka Любитель XML; starik-2005; +3 Ответить
5. fedor40 706 14.09.23 06:06 Сейчас в теме
(4)
У вас в адресе указан порт 8243.


Странно, но другие запросы у меня выполняются по адресу ws.lwo.by:8243. Получаем json.
Порт я изменил и не помогло.
Другой запрос у меня без body. Вот я думаю, что в нем проблема.
А в постмоне не посмотреть выполняемый запрос?
6. Sashares 35 14.09.23 08:15 Сейчас в теме
(5)Поставьте Fiddler, он позволяет посмотреть отправляемые запросы из других программ.
7. Sashares 35 14.09.23 10:09 Сейчас в теме
(5)Чтобы увидеть в Fiddler https соединения, достаточно включить опцию в Tools - Options.
См.файлы.
Прикрепленные файлы:
8. user1936670 14.09.23 11:02 Сейчас в теме
У метода УстановитьТелоИзСтроки три параметра. Все они важны.
user1878860; +1 Ответить
9. Flextor74 14.11.23 12:52 Сейчас в теме
HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапроса,,ИспользованиеByteOrderMark.НеИспользовать)

Вот так будет работать.
user1878860; +1 Ответить
10. DorKarta 13.02.24 18:17 Сейчас в теме
(9) Спасибище !
Реально заработало. До того как нашел совет полдня убил.
Flextor74; +1 Ответить
11. MyPuK_OLD 19.09.24 10:17 Сейчас в теме
(10) А что у Вас в "СоздатьСтрокуАвторизации()"?

Пытаюсь получить токен от сервиса по аналогичному заголовку запроса(application/x-www-form-urlencoded), но в моем случае авторизация не требуется.
Оставьте свое сообщение

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