Ver Mensaje Individual
  #3 (permalink)  
Antiguo 11/12/2012, 13:37
Avatar de jhonjairo00
jhonjairo00
 
Fecha de Ingreso: noviembre-2010
Ubicación: Bogotá D.C.
Mensajes: 31
Antigüedad: 13 años, 5 meses
Puntos: 6
Respuesta: Envio y recepción SOAP con .NET

Buenas,

Por si acaso a alguien le interesa...
Además del código que puse anteriormente (con el que se captura la respuesta siempre y cuando la solicitud no traiga excepciones) también les pongo la forma de manejar la excepciones ya que anteriormente siempre arrojaba "HTTP 500 Internal Server error" cuando había excepciones.

En este caso sólo voy a poner el código de la función que hace la invocación, finalmente los otros métodos no sufrieron ninguna modificación...

Código vb:
Ver original
  1. Public Function InvokeService(ByRef bProcessOK As Boolean) As String
  2.         Dim _response As WebResponse = Nothing
  3.         Dim _strResponse As String = Nothing
  4.         Dim _req As HttpWebRequest = Me.CreateWebRequest() 'Instancia de la solicitud Http
  5.        'Creación del cuerpo de la solicitud Http
  6.        Using _stm As Stream = _req.GetRequestStream()
  7.             Using _stmw As New StreamWriter(_stm)
  8.                 _stmw.Write(Me.CreateSoapEnvelope()) 'Carga de la solicitud SOAP
  9.            End Using
  10.         End Using
  11.         Try
  12.             _response = _req.GetResponse 'Captura de la respuesta
  13.            bProcessOK = True 'Respuesta exitosa
  14.            Dim _str As Stream = _response.GetResponseStream 'Carga la respuesta
  15.            Dim _sr As New StreamReader(_str) 'Leer la respuesta
  16.            _strResponse = _sr.ReadToEnd 'Carga a una cadena
  17.            Return Me.StringResponse(HttpUtility.HtmlDecode(_strResponse)) 'Formatea la respuesta
  18.        Catch ex As WebException
  19.             bProcessOK = False 'Respuesta con excepciones
  20.            Dim _HttpResponse As HttpWebResponse = DirectCast(ex.Response, HttpWebResponse) 'Instancia de la respuesta con excepciones
  21.            'Crea el cuerpo de la respuesta con excepciones
  22.            Using streamResponse As Stream = _HttpResponse.GetResponseStream
  23.                 Using _reader As New StreamReader(streamResponse)
  24.                     Dim failureReason As String = _reader.ReadToEnd ' Carga la cadena con los detalles de la excepción
  25.                    Throw New Exception(failureReason) 'Lanza la excepción
  26.                End Using
  27.             End Using
  28.         End Try
  29.     End Function

Bueno espero que a alguien le sirva

Saludos.