post-запрос к стороннему сервису работает на ERP, не работает на УПП
Есть обработка для выгрузки инфы наружу
В ерп (УФ) отрабатывает, вручную (из адресной строки браузера) отрабатывает, из упп (обычные формы) не хочет, ошибку возвращает сервис - неверный логин-пароль
логин-пароль несколько раз проверены, строка, которая формируется в упп, вручную вставлялась в браузер и работала
строкаJS - собственно тело, то что идет после "?" в запросе
почему так?
В ерп (УФ) отрабатывает, вручную (из адресной строки браузера) отрабатывает, из упп (обычные формы) не хочет, ошибку возвращает сервис - неверный логин-пароль
логин-пароль несколько раз проверены, строка, которая формируется в упп, вручную вставлялась в браузер и работала
HTTPConnect = Новый HTTPСоединение(Объект.Адрес,443,,,,,Новый ЗащищенноеСоединениеOpenSSL(Неопределено,Неопределено));
HTTPЗапрос = Новый HTTPЗапрос(Объект.ТекстКоманды);
HTTPЗапрос.Заголовки.Вставить("Content-type", "application/x-www-form-urlencoded");//;charset=utf-8
HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаJS);
Ответ = HTTPConnect.ОтправитьДляОбработки(HTTPЗапрос);
строкаJS - собственно тело, то что идет после "?" в запросе
почему так?
По теме из базы знаний
Найденные решения
в общем в итоге, из упп на обычных формах 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"));
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
вот простейший пример, в ерп работает, в упп нет. базы на разных серверах, но с обоих серверов запрос из командной строки отрабатывал
Соединение = Новый HTTPСоединение("speller.yandex.net",443,,,,,Новый ЗащищенноеСоединениеOpenSSL);
ТекстНаПроверку = "Предложение с ашибкой";
Заголовки = Новый Соответствие;
Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded");
Запрос = Новый HTTPЗапрос("/services/spellservice.json/checkText", Заголовки);
Запрос.УстановитьТелоИзСтроки("text="+ТекстНаПроверку);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
Данные = ПрочитатьJSON(ЧтениеJSON, Ложь);
Показать
(4)
ТекстНаПроверку = "Предложение с ошибкой"
(4)
Запрос.УстановитьТелоИзСтроки("text="+ТекстНаПроверку,"UTF-8",ИспользованиеByteOrderMark.НеИспользовать);
Может дело в разделителе или кодировке. Проверяй.
ТекстНаПроверку = "Предложение с ашибкой";
ТекстНаПроверку = "Предложение с ошибкой"
(4)
Запрос.УстановитьТелоИзСтроки("text="+ТекстНаПроверку);
Запрос.УстановитьТелоИзСтроки("text="+ТекстНаПроверку,"UTF-8",ИспользованиеByteOrderMark.НеИспользовать);
Может дело в разделителе или кодировке. Проверяй.
(9) И кто тогда возвращает ошибку? Авторизация на веб-сервере из тела логин-пароль не возьмет. Т.е. внутри какой-то алгоритм отрабатывает? А в него заглянуть можно? Что он получает? Хотя ... если отсылаемая строка одна и та же, то должно отработать. Сервису в принципе пофиг кто ему данные шлет, УПП или ERP. А никаких прокси у клиента нет? Может ошибку возвращает не сервис?
(15) Тогда все вопросы к серверу. Значит он что-то криво возвращает. Если 200 то отработало штатно, а то что массив пустой, то по мнению веб-сервера так и должно быть. Хотя я бы посмотрел на размер возвращаемого пакета. Возможно там структура какая-нибудь хитрая.
(17) Так не бывает. Хотя бывает конечно, если на сервере проверять версию веб-клиента. Но это уже совсем экзотика. Если http запрос одинаковый, то и ответ будет одинаковым. А кто его формирует - дело десятое. Если ты его и в браузере проверял, то попробуй сменить запрос с post на get в УПП. Как отреагирует?
в общем в итоге, из упп на обычных формах 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"));
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот