Comments (3)
Я также столкнулся с таким поведением.
При такой ошибке на стороне вызывающего кода никак нельзя узнать об ошибке, которую вернул сайт.
например, я при запросе к сервису 1С столкнулся с ошибкой Недостаточно прав для использования ресурса с данным HTTP методом
и сам текст ошибки смог увидеть только в режиме отладки, по-другому средствами данной библиотеки его не достанешь (
@vbondarevsky я готов сделать ПР
from connector.
Обсуждение из телеграма https://t.me/ssl1c/80330
Кирилл Черненко, [18.03.21 00:14]
[In reply to Artur Ayukhanov]
Почему нельзя? Получить тело как текст и узнать таки что выдает сайт
Artur Ayukhanov, [18.03.21 00:15]
[In reply to Кирилл Черненко]
это можно ,конечно, но если юзать методы-обертки из АПИ для json, то нельзя )
т.е. получается, что эти методы в проде юзать нельзя, т.к. могут упасть при проблемах, а суть проблемы ты никак не узнаешь.
если же переписать код без их использования, зачем они тогда нужны? )
Artur Ayukhanov, [18.03.21 00:17]
или каждый вызов таких методов обмазывать попытками и чтением тела не очень солидно, когда это можно сделать внутри самой библиотеки
Кирилл Черненко, [18.03.21 00:18]
[In reply to Artur Ayukhanov]
А какое решение ты видишь? Можно конечно прочитатьJson завернуть в попытку и если упал в исключение ВызыватьИсключение с текстом из тела ответа (правда там могут быть хтмлки от сайта и в ЖРе это будет так себе анализировать), ну или все тело упаковать в структуру со свойством "error_message" или типа того и возвращать его
Artur Ayukhanov, [18.03.21 00:21]
[In reply to Кирилл Черненко]
ну да, завернуть в попытку и писать в ЖР или еще куда тело ответа
и вызывать исключение
Artur Ayukhanov, [18.03.21 00:23]
тут можно
- либо писать в ЖР с телом реального ответа и подробным представлением ошибки и просто ВызватьИсключение; (проброс ошибки наверх)
- Либо запись в ЖР с телом реального ответа и подробным представлением ошибки
и ВызватьИсключение с эти же телом
вариант с упаковкой в структуру так себе, т.к. мы при этом нарушаем контракт, получатель-то ожидает ответ в нужном для него формате, а не наш.
да и ситуация исключительная
Кирилл Черненко, [18.03.21 00:29]
[In reply to Artur Ayukhanov]
Можно, правда ковырять хтмлки в ЖРе такое себе удовольствие но а целом решение.
Со структурой это вариант для того что бы дать принимающей стороне возможность самостоятельно разрулить ситуацию, что-то типа:
Объект = JsonВОбъект();
ПроверитьВозвратВебСервиса(Объект); // тут проверка это структура с ошибкой и возможно внутри вызов исключения
Далее всякий бизнес код
from connector.
Возможно, ПР #64 частично может решить проблему, если передавать метод-обработчик исключения
from connector.
Related Issues (20)
- Выполнение JS-кода при загрузке страницы HOT 1
- При обработке перенаправлений cookies в сессии не замещаются новыми из ответа
- Некорректно обрабатывается перенаправление с относительным путем в location
- Ошибка при запросах с аутентификацией в мобильном приложении
- Результат postjson в структуру HOT 1
- Теряется символ "=" в значениях cookie HOT 1
- charset в Content-type HOT 1
- Поддержка работы с облаками S3 HOT 7
- поддержка функций HOT 1
- Имя параметра multipart/form-data, содержащего вложения, должно быть «file»
- Ошибка GET при S3 подключении. HTTPЗапрос.Тело запроса HOT 7
- Параметры запроса при создании структуры новых параметров. HOT 2
- Заголовки сессии имеют приоритет над заголовками передаваемых как параметры HOT 1
- Функции типа Post изменяют входной параметр ДополнительныеПараметры
- для multipart/form-data не формируется (обязательный для некоторых серверов) заголовок Content-Length - размер в байтах тела запроса
- Зачем в расширении контролируется свойство "Назначение использования"? HOT 1
- Заменяет значение таймаута. HOT 2
- Ошибка обработки URL с числовыми параметрами запроса без значений HOT 1
- Кодировать надо не только параметры URL, но и путь HOT 6
- Не поддерживаются параметры с точкой. HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from connector.