post-запрос к стороннему сервису работает на ERP, не работает на УПП

1. vechiy 35 24.08.20 16:00 Сейчас в теме
Есть обработка для выгрузки инфы наружу
В ерп (УФ) отрабатывает, вручную (из адресной строки браузера) отрабатывает, из упп (обычные формы) не хочет, ошибку возвращает сервис - неверный логин-пароль
логин-пароль несколько раз проверены, строка, которая формируется в упп, вручную вставлялась в браузер и работала

					HTTPConnect 		= Новый HTTPСоединение(Объект.Адрес,443,,,,,Новый ЗащищенноеСоединениеOpenSSL(Неопределено,Неопределено));

				HTTPЗапрос 			= Новый HTTPЗапрос(Объект.ТекстКоманды);
				HTTPЗапрос.Заголовки.Вставить("Content-type", "application/x-www-form-urlencoded");//;charset=utf-8
				HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаJS);
				Ответ 			 = HTTPConnect.ОтправитьДляОбработки(HTTPЗапрос);



строкаJS - собственно тело, то что идет после "?" в запросе
почему так?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
24. vechiy 35 28.08.20 16:06 Сейчас в теме +0.5 $m
в общем в итоге, из упп на обычных формах 8.2 работает так:

СтрокаJSON = "предложение с ашибкой";
	
	СтрокаJSON = КодироватьСтроку(СтрокаJSON, СпособКодированияСтроки.КодировкаURL);

	HTTPСоединение = Новый HTTPСоединение("speller.yandex.net");
	HTTPЗапрос = Новый HTTPЗапрос("/services/spellservice.json/checkText"); 
	HTTPЗапрос.Заголовки.Вставить("Content-type", "application/x-www-form-urlencoded");
	HTTPЗапрос.УстановитьТелоИзСтроки("text=" + СтрокаJSON, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);

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

	Сообщить("Код результата: " + Ответ.КодСостояния);
	Сообщить("Ответ: " + Ответ.ПолучитьТелоКакСтроку("UTF-8"));
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
19. Xershi 1490 27.08.20 16:49 Сейчас в теме
(1) ой насмешили. А УПП до режима совместимости подряли?)
Вебкит обновили только с 8.3.14!
20. vechiy 35 27.08.20 17:15 Сейчас в теме
(19) нет) и это непросто будет сделать
21. Xershi 1490 27.08.20 17:23 Сейчас в теме
(20) за месяц можно управиться.
Или меняйте код.
22. vechiy 35 28.08.20 09:43 Сейчас в теме
(21) так есть принципиальная возможность выгрузить из упп с режимом совместимости 8.2.13?)
23. Xershi 1490 28.08.20 09:56 Сейчас в теме
(22) на клиенте разные результаты. На сервере возможно. В ОФ только регламентные задания так работает. А так пробуйте клепать управляемую форму и выполнять код на сервере.
2. user1166203 24.08.20 16:12 Сейчас в теме
ээээ. еси вы в браузере получаете ответ, то это гет запрос. А пушите пост. Сделайте
Ответ = хттпКоннект.Получить(хттпЗапрос)
3. vechiy 35 24.08.20 16:18 Сейчас в теме
(2) то же самое, что и "ОтправитьДляОбработки" - ошибка та же, логин-пароль
4. vechiy 35 24.08.20 17:14 Сейчас в теме
вот простейший пример, в ерп работает, в упп нет. базы на разных серверах, но с обоих серверов запрос из командной строки отрабатывал

Соединение = Новый HTTPСоединение("speller.yandex.net",443,,,,,Новый ЗащищенноеСоединениеOpenSSL);
	 
	 ТекстНаПроверку = "Предложение с ашибкой";
	 
	 Заголовки = Новый Соответствие;
	 
	 Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded");
	 
	 Запрос = Новый HTTPЗапрос("/services/spellservice.json/checkText", Заголовки);
	 Запрос.УстановитьТелоИзСтроки("text="+ТекстНаПроверку);
	 
	 Ответ = Соединение.ОтправитьДляОбработки(Запрос);
	 
	 ЧтениеJSON = Новый ЧтениеJSON;
	 ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
	 
	 Данные = ПрочитатьJSON(ЧтениеJSON, Ложь);
Показать
5. RocKeR_13 1329 24.08.20 18:01 Сейчас в теме
(4) а на сервере ли отправляется запрос из УПП? На сервис данные для авторизации непосредственно в строке запроса что ли передаются?
6. vechiy 35 24.08.20 18:11 Сейчас в теме
(5) я пробовал и на клиенте, и на сервере, результат в упп один
8. triviumfan 94 25.08.20 11:31 Сейчас в теме
(4)
ТекстНаПроверку = "Предложение с ашибкой";

ТекстНаПроверку = "Предложение с ошибкой"
(4)
Запрос.УстановитьТелоИзСтроки("text="+ТекстНаПроверку);

Запрос.УстановитьТелоИзСтроки("text="+ТекстНаПроверку,"UTF-8",ИспользованиеByteOrderMark.НеИспользовать);
Может дело в разделителе или кодировке. Проверяй.
7. serg33rus 28 24.08.20 18:27 Сейчас в теме
ошибку возвращает сервис - неверный логин-пароль

А как вообще авторизация происходит? В заголовках что-то не видно ни логина ни пароля.
9. vechiy 35 25.08.20 15:11 Сейчас в теме
10. serg33rus 28 25.08.20 16:10 Сейчас в теме
(9) И кто тогда возвращает ошибку? Авторизация на веб-сервере из тела логин-пароль не возьмет. Т.е. внутри какой-то алгоритм отрабатывает? А в него заглянуть можно? Что он получает? Хотя ... если отсылаемая строка одна и та же, то должно отработать. Сервису в принципе пофиг кто ему данные шлет, УПП или ERP. А никаких прокси у клиента нет? Может ошибку возвращает не сервис?
11. vechiy 35 26.08.20 17:34 Сейчас в теме
опуская вопрос "нафига"? - как в едт
(10)
ну в этом примере со спеллером яндекса нет никакой авторизации
в уф работает, на обычных нет, втф?
12. serg33rus 28 26.08.20 18:51 Сейчас в теме
(11) Не понял тогда. Авторизации нет, а ошибка логин-пароль есть? Что на обычных говорит? Какую ошибку? Остановись отладчиком, веб-сервер какой код возвращает?
13. vechiy 35 27.08.20 10:54 Сейчас в теме
(12) нет
просто я пытаюсь из упп сейчас выполнить хотя бы простейший запрос к яндексу, и что-то идёт не так
ошибок никаких нет, он возвращает пустой массив, а должен вернуть массив с указанием на символ с ошибкой "предложение с ашибкой" - 14й
14. serg33rus 28 27.08.20 11:27 Сейчас в теме
(13) погоди. Он возвращает пустой массив? С кодом ответа 200? Код ответа от сервера какой? Любой веб-сервер возвращает код ответа.
15. vechiy 35 27.08.20 14:02 Сейчас в теме
16. serg33rus 28 27.08.20 15:13 Сейчас в теме
(15) Тогда все вопросы к серверу. Значит он что-то криво возвращает. Если 200 то отработало штатно, а то что массив пустой, то по мнению веб-сервера так и должно быть. Хотя я бы посмотрел на размер возвращаемого пакета. Возможно там структура какая-нибудь хитрая.
17. vechiy 35 27.08.20 16:23 Сейчас в теме
(16) ну да, он видит - ерп, ок, работаю норм
упп - нах, возвращаю пустой массив
18. serg33rus 28 27.08.20 16:45 Сейчас в теме
(17) Так не бывает. Хотя бывает конечно, если на сервере проверять версию веб-клиента. Но это уже совсем экзотика. Если http запрос одинаковый, то и ответ будет одинаковым. А кто его формирует - дело десятое. Если ты его и в браузере проверял, то попробуй сменить запрос с post на get в УПП. Как отреагирует?
24. vechiy 35 28.08.20 16:06 Сейчас в теме +0.5 $m
в общем в итоге, из упп на обычных формах 8.2 работает так:

СтрокаJSON = "предложение с ашибкой";
	
	СтрокаJSON = КодироватьСтроку(СтрокаJSON, СпособКодированияСтроки.КодировкаURL);

	HTTPСоединение = Новый HTTPСоединение("speller.yandex.net");
	HTTPЗапрос = Новый HTTPЗапрос("/services/spellservice.json/checkText"); 
	HTTPЗапрос.Заголовки.Вставить("Content-type", "application/x-www-form-urlencoded");
	HTTPЗапрос.УстановитьТелоИзСтроки("text=" + СтрокаJSON, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);

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

	Сообщить("Код результата: " + Ответ.КодСостояния);
	Сообщить("Ответ: " + Ответ.ПолучитьТелоКакСтроку("UTF-8"));
Показать
Оставьте свое сообщение

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