Отлов исключений в моем мыльном клиенте

Возьмите TripPriceService.wsdl по по этой ссылке Добавьте ссылку на службу (ServiceReference1) в приложение Windows, указав wsdl из упомянутого файла wsdl, сохраненного в локальной папке. Мой вопрос состоит из двух частей

1) Является ли приведенное ниже сообщение об ошибке действительной ошибкой мыла в соответствии с wsdl (TripPriceServiceException)?

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:trip="http://trip.price.service">
   <soapenv:Header/>
   <soapenv:Body>
      <soapenv:Fault>
         <faultcode>soapenv:client</faultcode>
         <faultstring>error</faultstring>
         <detail>
            <trip:TripPriceServiceException/>
         </detail>
      </soapenv:Fault>
   </soapenv:Body>
</soapenv:Envelope>

2) Теперь, как обрабатывать и перехватывать тег подробностей, когда ответом является soap:fault?

Imports windowsapp1.ServiceReference1
Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim obj As New ServiceReference1.TripPriceServiceFacadeClient
        Dim abc As New ServiceReference1.trip
        Dim a As Single
        Dim d As ServiceReference1.TripPriceServiceException
        a = obj.getTripPrice(abc)
    End Sub
End Class

Строка obj.getTripPrice вызывает службу. Однако вызовет ли он исключение, если ответ будет ошибкой мыла (типа TripPriceServiceException)? Как обрабатывать такие случаи, нужно ли нам использовать ServiceReference1.TripPriceServiceException? Я просто использовал этот wsdl, чтобы объяснить мою текущую ситуацию. Нам необходимо обрабатывать такие ошибки в нашем клиенте веб-сервиса.


person Suresh    schedule 24.02.2012    source источник


Ответы (1)


Может быть, я не понимаю вашего вопроса. Почему бы вам не использовать блок Try/Catch/End Try и не перехватывать TripPriceServiceException?

person John Saunders    schedule 24.02.2012
comment
Привет, Джон, допустим ли xml ошибки мыла для TrpPriceServiceExcetion. Почему я спрашиваю, так это потому, что любой действительный xml может подпадать под подробный тег для ошибки мыла. Однако для типа TripPriceServiceException только элемент trip:TripPriceServiceException может подпадать под подробный тег (насколько я понимаю) - person Suresh; 25.02.2012
comment
Это выглядит действительным. Вы правы, только этот элемент (без содержимого) может появиться для этой ошибки. Это должно перевести на FaultException<TripPriceServiceException>, который вы можете поймать. - person John Saunders; 25.02.2012
comment
Привет, Джон. Я получаю сообщение = Сервер совершил нарушение протокола. Раздел = ResponseHeader Detail = CR должен сопровождаться LF этой ошибкой в ​​образце клиента веб-сервиса, который мы разработали для тестирования нашего веб-сервиса. Я знаю, что он пойдет, если мы добавим useUnsafeHeaderParsing=true. Однако мы являемся поставщиком услуг и не знаем, почему клиент получает эту ошибку. Я использую преобразование Xslt, xml для генерации ошибки мыла. Ответ поступает от устройства datapower. - person Suresh; 27.02.2012
comment
Это звучит как несвязанная проблема. - person John Saunders; 27.02.2012