Estoy consumiendo un .NET WebService de terceros en mi aplicación cliente. Para fines de depuración, quiero capturar las solicitudes SOAP que se envían desde mi servidor. ¿Cómo voy a hacer esto? Esto se está haciendo en .NET 2.0 sin el uso de WCF o WSE..NET Soap Request de registro en el cliente
Respuesta
Si es por motivos de depuración, simplemente configuro la solicitud web para usar un proxy y envío la solicitud completa a través de fiddler (http://www.fiddlertool.com), entonces puede ver exactamente lo que se está transmitiendo a través del cable.
Hay muchas opciones que puede utilizar. Ciertamente hay algunas herramientas comerciales para esto (como SOAPScope), pero si solo buscas capturar los contenidos brutos de las solicitudes/respuestas, hay varias herramientas además de Fiddler (que ya mencionó Walden).
Personalmente, he sido un usuario de largo plazo de Simon Fell TcpTrace y YATT.
Si está interesado en realmente instrumentar el código para que pueda hacerlo solo (por ejemplo, registrando todo en un archivo o algo), entonces es posible que desee buscar la implementación de un SoapExtension en su servidor.
Puede usar SoapExtension para registrar las llamadas de Soap.
He usado the Web Service, SOA and SOAP Testing Tool - soapUI con buenos resultados en el pasado.
-Edoode
escribí un post sobre esto hace un tiempo titulado "Logging SOAP Messages in .NET".
La manera más fácil es utilizar las herramientas ya provistas con .NET.
1. extender la clase SoapExtension
.
2. reemplazar el método ProcessMessage
para obtener una salida completa de su solicitud SOAP, a continuación, enviar esta información a un archivo de texto o registro de eventos.
public class SoapMessageLogger : SoapExtension
{
//…
public override void ProcessMessage(SoapMessage message)
{
switch(message.Stage)
{
case SoapMessageStage.BeforeDeserialize:
LogResponse(message); break;
case SoapMessageStage.AfterSerialize:
LogResponse(message); break;
// Do nothing on other states
case SoapMessageStage.AfterDeserialize;
case SoapMessageStage.BeforeSerialize;
default: break;
}
}
//…
}
Tal Wireshark? Siempre lo uso para capturar el tráfico de mis aplicaciones.
- 1. PHP SOAP HTTP Request
- 2. Java: Cliente SOAP simple
- 3. AngularJS como cliente SOAP
- 4. Uso de Finagle para el cliente Scala SOAP simple
- 5. Un simple cliente java SOAP
- 6. Cliente SOAP para Python 3
- 7. Http Request - Bypass DNS [.Net]
- 8. Haskell: ¿qué lib de cliente SOAP usar?
- 9. Cliente de servicio WSDL/SOAP Android
- 10. biblioteca de servicio Web (SOAP) cliente genérico para C++
- 11. Cliente SOAP en C# sin acceso a un archivo WSDL
- 12. ¿Cómo generar un código de cliente PHP soap?
- 13. Cliente Java para el servicio web SOAP con autenticación NTLM
- 14. ¿Cómo generar el código PHP del cliente para SOAP usando SOAP UI?
- 15. ¿Incoherencia de SOAP? Delphi 2010 (Win32) Servidor y cliente .NET intercambiando 'out-parameter' y 'result'
- 16. WCF Soap Actions en el encabezado HTTP o encabezado SOAP?
- 17. ¿Es posible el registro pasivo en .NET?
- 18. Servicio de registro Solicitud y respuesta SOAP en C#
- 19. ¿Cómo hacer un cliente SOAP/WSDL en C#?
- 20. Cómo publicar solicitudes SOAP desde .NET?
- 21. Guardar el objeto serializable en el registro en .net?
- 22. Escribiendo una aplicación de cliente C++ SOAP (multiproceso) - sin gSOAP
- 23. Java (servicio web - SOAP) - ¿Cómo agrego un controlador SOAP en el lado del cliente y habilito MTOM correcto?
- 24. ¿Cómo puedo obtener la respuesta XML sin formato de un cliente SOAP generado .NET en lugar de objetos serializados?
- 25. Java servicio web volviendo objeto nulo a un cliente .NET
- 26. Cliente SOAP con Ruby y Savon: Cómo agregar el atributo EncodingType en el elemento Nonce
- 27. Eliminar ActivityId de WCF Request
- 28. Solicitud SOAP con el atributo
- 29. Registro de controladores para el evento .NET COM en C++
- 30. ¿Cómo anulo el registro de un controlador en net/http?
Probé 6 formas diferentes de hacer esto en el código antes de renunciar y probar el violinista. Si lo hubiera leído y hubiera visto que es compatible con el tráfico cifrado, primero lo habría empezado. – carson