跟踪/记录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
如果你想要请求/响应的Http包装器,你可以尝试像这样使用。net框架3.5在c#中调用web api