Крупный дистрибьютор отдает сведения для своих клиентов с 2-х серверов. Получать сведения следует передав запрос на сервер:
Соединение = Новый HTTPСоединение("АдресСервера", Порт,"ИмяПользователя", "Пароль");
Запрос = Новый HTTPЗапрос("/GetUserDataJson");
Результат=Соединение.Получить(Запрос);
Код одинаковый для запроса к первому серверу и ко второму. Отличаются только адреса серверов и данные аутентификации.
На платформе 8.3.14 вплоть до версии 2095 нет ни каких проблем :
С обоих серверов возвращается ответ, извлекается тело ...
Но тот же код на платформе 8.3.15 (попробовал на 1985) и 8.3.16 на одном сервере срабатывает как и прежде - без проблем (ответ, тело и т.д.), а при обращении к другому,при попытке выполнения Соединение.Получить(Запрос) , возвращается "Ошибка работы с Интернет: Unsupported protocol".
Запрос в браузере выполняется как и прежде... Представители дистрибьютора говорят, что на серверах ничего не изменилось.
На ИТС не нашел информации... но честно говоря не понимаю - что же я все таки ищу и в какую сторону смотреть???
Что же изменилось в платформе 8.3.15 и новее в отношении HTTPСоединение и HTTPЗапрос?????
На что надо обратить внимание????
ПОМОГИТЕ!!!
(1) Поставьте Fiddler, выполните запрос в браузере, в платформе на которой работает, на которой не работает - сравните результаты.
https://www.telerik.com/fiddler
(7)На фидлере ничего не надо эмулировать, он показывает реальные запросы и ответы от разных программ.
То есть нужно:
1 - запустить фидлер
2 - запустить 1с под платформой где работает обмен
3 - в 1с выполнить запросы к сервису - в фидлере будут видны эти запросы (в таблице), в правой части - по каждой строке таблицы - на закладке RAW - полный текст запроса/ответа вместе с заголовками.
4 - запустить 1с под платформой где НЕ работает обмен, выполнить запросы к сервису, чтобы выдалась ошибка
5 - сравнить запросы/ответы (с закладки RAW) которые будут видны в фидлере
(8)Сделал. Разницы в информации на закладке RAW нет!!! Причем Fiddler в обоих случаях получает ответ от сервера. И он в обоих случаях одинаковый. Мистика какая то!
(3) Тогда или в отладчике или переделывать форму, надо смотреть что возвращает в Результат. Там должен быть и код ответа и ошибка строкой. Тогда хоть что-то будет понятно. Код ошибки позволит локализовать проблему.
(6) Странно все это. Т.е. в браузере get запрос к http://....... срабатывает без проблем? Тогда похоже на глюки платформы, но сам пользуюсь 16 и активно используют обмен данными по http. Не сталкивался с таким поведением.
Кстати, а браузер в инет не через прокси случайно лезет?
(11)Да, get запрос в браузере возвращает ожидаемые данные как с одного, так и с другого сервера. Прокси - нет. Я не думаю, что это глюк. Ведь Второй сервер отрабатывает на любой платформе. Я хотел бы получить ответ : а что значит "Ошибка работы с Интернет: Unsupported protocol"??? Что ждет функция
Соединение.Получить(Запрос)
в качестве ответа от сервера??? может быть теперь нужно какой то заголовок передавать ??? Или сказать админам что они просмотрели настройку сервера?
(12) Функция в качестве ответа ждет код 200 и данные. Или не 200 если ошибка. Кстати. А ты на чей стороне вызываешь этот код: клиента или сервера? Вообще такая ошибка мелькает когда к https обращаешься как к http. Но тут какая-то мистика, в браузере говоришь открывается http. Если еще идея. Попробуй в заголовок воткнуть user-agent. Хотя это уже от безисходности.
Заголовки = Новый Соответствие;
Заголовки.Вставить("Content-Type", "application/json");
Заголовки.Вставить("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 YaBrowser/20.6.2.195 Yowser/2.5 Safari/537.36");
Запрос = Новый HTTPЗапрос("/GetParamsJson",Заголовки);
Результат=Соединение.Получить(Запрос);
Сделал вот так.
На 14 платформе без изменений - все возвращается, 15 и 16 тоже без изменений - та же ошибка. Может что то не так в заголовке User-Agent?
Код дает неизменный результат что на стороне сервера, что на стороне клиента.
(14) Просто чудеса. Боюсь что тебе придется просить помощи у админов сайта. Пусть в логе посмотрят что за запрос вообще идет. но то что 14 платформа отрабатывает, а 15 и 16 нет - это уже за гранью понимания, если честно.