跟踪/记录SOAP XML请求和响应以及来自SOAP . net客户端应用程序的HTTP状态码

本文关键字:SOAP 客户端 net 应用程序 HTTP 状态 XML 记录 请求 求和 响应 | 更新日期: 2023-09-27 18:18:45

我有一个c# . net 2.0应用程序,它是SOAP web服务的客户端,通过webrereferences添加到项目中。. net创建了方便的包装器类扩展SoapHttpClientProtocol,以便隐藏通信中的XML和SOAP/XML请求/响应的序列化/反序列化等所有内容。

我需要记录请求和对WebServices的响应,特别是我想从HTTP通信的响应中获得HTTP状态码。

到目前为止,我已经实现了SOAP扩展并获得原始SOAP XML请求/响应,但是我无法获得通信的HTTP SOAP响应的HTTP状态码?

编辑:所以我所拥有的是SoapHttpClientProtocol(由WSDL生成)的实例,我想从通信中获得HTTP状态代码。

我反编译

private object[] ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, bool asyncCall)

奇怪的是,在它里面有这个条件,当状态为500时实际上不会抛出错误?

if (num1 >= 300 && num1 != 500 && num1 != 400)
{
    throw new WebException(RequestResponseUtils.CreateResponseExceptionString(httpWebResponse, responseStream), null, WebExceptionStatus.ProtocolError, httpWebResponse);
}

EDIT2:所以我的问题通常是我有HTTP状态500的响应,实际上是成功传递,没有抛出webeexception,由于上面的代码,这对我不起作用,我想检测这种情况,这就是为什么我需要HTTP状态代码。

HTTP/1.1 500 Internal Server Error

跟踪/记录SOAP XML请求和响应以及来自SOAP . net客户端应用程序的HTTP状态码

如果你想要请求/响应的Http包装器,你可以尝试像这样使用。net框架3.5在c#中调用web api