从SOAP .Net客户端应用程序跟踪/记录SOAP XML请求和响应以及HTTP状态代码

时间:2015-10-22 11:40:33

标签: c# .net http soap soap-extension

我有C#.Net 2.0 App,它是通过WebReferences添加到项目中的SOAP Web服务的客户端。 .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的响应,它实际上传递成功,而不会抛出WebException,由于上面的代码,这对我不起作用,我想检测这种情况,这就是为什么我需要HTTP状态代码。

HTTP/1.1 500 Internal Server Error

1 个答案:

答案 0 :(得分:0)

如果你想要请求/响应的Http包装器,你可以尝试这样的Call web APIs in C# using .NET framework 3.5