Обработка ошибок с использованием заголовков мыла - PullRequest
1 голос
/ 28 октября 2008

Мы разрабатываем новый веб-сервис и изучаем «лучшие практики» для возврата ошибок в ответе мыла.

Мы пытались создать объект ответа об ошибке, который каждый ответ содержал бы в качестве свойства. Это кажется немного тяжелым, однако, и задаетесь вопросом, возможно ли использовать заголовок SOAP для переноса этой информации? Как вы обычно работаете с пользовательскими ошибками, используя SOAP?

Ответы [ 4 ]

2 голосов
/ 28 октября 2008

Soap уже использует пользовательские заголовки для информации об ошибках, все, что вам нужно сделать, это создать исключение на стороне сервера, а исключение возникает на стороне клиента как SoapException .

Вы можете выбросить SoapExceptions на стороне сервера, если вы хотите больше контроля над сообщением / информацией об исключении.

Edit: Для дополнительной информации вместе с запросом можно использовать пользовательские заголовки мыла. Вот пример статьи о CodeProject , в которой для аутентификации использовались настраиваемые заголовки мыла, но настраиваемые заголовки мыла могут использоваться для других целей, таких как отправка дополнительной информации, которая необязательно является условием ошибки (может быть информацией бизнес-логики)

1 голос
/ 28 октября 2008

SOAPFault используется для хранения информации об ошибках и статусе, и сервер возвращает 500 в заголовке HTTP, чтобы указать его как ошибку.

см. Спецификацию от W3.org

http://www.w3.org/TR/2000/NOTE-SOAP-20000508/#_Toc478383507

Вы можете создать свой собственный информационный токен, либо поместив его в мыльный заголовок, либо даже в элемент в вашем возвращаемом результате, если вы четко документируете его для третьей стороны. Однако это не стандартный способ выявления ошибок.

0 голосов
/ 08 декабря 2008

Заголовки мыла предназначены для внеполосной информации и не должны использоваться для сообщений об ошибках. Кроме того, мыльные заголовки не должны использоваться в мыльных ответах, потому что:

  • если mustUnderstand отсутствует или равно 0, клиент может спокойно их игнорировать.
  • если mustUnderstand равен 1, клиент не может сообщить, что не понимает его (так как это ответ).

И да, я знаю, что некоторые стандарты WS- * описывают заголовки мыла в ответе ...

Итак,

Используйте ошибки мыла для ошибок, достаточно серьезных, чтобы не было объекта ответа. Добавьте токен статуса в ответ для предупреждений и информационных сообщений.

0 голосов
/ 28 октября 2008

Я использовал подобные методы в прошлом для сложных операций. Особенно, когда вам нужно (несколько?) Описание ошибок, а также код ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...