Вопрос

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

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

Это было полезно?

Решение

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

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

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

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

Другие советы

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

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

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

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

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

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

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

Так,

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top