如果一切正常而且终端没有被破坏,我们希望返回25。但是,终端被破坏了,得到以下结果:
| <?xml version="1.0" encoding="UTF-8" standalone="no" ?> <SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Body> <SOAP-ENV:Fault> <faultcode>SOAP-ENV:Client</faultcode> <faultstring>AddNumbers</faultstring> <faultactor> http://tempuri.org/action/Example.AddNumbers </faultactor> <detail> <mserror:errorInfo xmlns:mserror= "http://schemas.microsoft.com/soap-toolkit/faultdetail/error/"> <mserror:returnCode>-2146828188</mserror:returnCode> <mserror:serverErrorInfo> <mserror:description> The first number must be greater than 10 </mserror:description> <mserror:source>AddNumbers</mserror:source> </mserror:serverErrorInfo> <mserror:callStack> <mserror:callElement> <mserror:component>Client</mserror:component> <mserror:description> The first number must be greater than 10 </mserror:description> <mserror:returnCode> -2147352567 </mserror:returnCode> </mserror:callElement> <mserror:callElement> <mserror:component> WSDLOperation </mserror:component> <mserror:description> Executing method AddNumbers failed </mserror:description> <mserror:returnCode> -2147352567 </mserror:returnCode> </mserror:callElement> </mserror:callStack> </mserror:errorInfo> </detail> </SOAP-ENV:Fault> </SOAP-ENV:Body> </SOAP-ENV:Envelope> |
上面的错误提供了很多信息,可以帮助你发现问题的所在。从错误中可见,WSDLOperation组件发现AddNumbers方法失败。它还表明是客户端发生问题,而且问题是:第一个数必须大于10。图五中显示了MSSoapT.exe中这个错误是怎样的。
![]() 图五 跟踪SOAP错误 |
这些工具还有很多用途。你可以用它们来分析SOAP请求和响应。有时候,Web Service只有一个客户端。如果你有客户端的源代码,你可以修改终端,让它可以通过跟踪工具。这样,你可以利用Microsoft SOAP Toolkit的底层API来反过来设计WSDL文件或构建客户端程序。
