SOAP Web服务问题

时间:2009-09-21 18:55:03

标签: c# .net web-services

我正在尝试使用第三方提供的SOAP Web服务。我无法使服务在.NET 3.5中正常工作。我已将其添加为Web引用,似乎一切顺利。问题是,当我调用服务时,我得到的所有内容都是NULL对象。我与提供商合作,似乎服务正常。他确实提到了:

“我们正在使用Axis2 Document / Literal并支持SOAP 1和2。”

我不确定这意味着什么,因为我是使用Web服务的半新手。我是否需要在.NET中更改某些配置参数或某些内容才能使此服务正常工作?

3 个答案:

答案 0 :(得分:1)

根据我的经验,Web服务互操作性并不是它声称的魔力。特别是在.NET和Java之间。

  • Axis2是一个Java Web服务“引擎”
  • Document / Literal是一个style of writing a WSDL,可以产生特殊的SOAP外观
  • SOAP 1和2(您可能知道)消息格式及其特定版本
  

我得到的只是一个NULL对象

开始并不多,你能提供更多信息吗?

我建议您尝试拦截交换的SOAP消息(可以使用tcpmon)并检查它们是否有效。如果远程服务无法处理您的请求,您可能会遇到异常,所以我猜您的客户端在解析响应时遇到了麻烦。此外,您可以使用soapUI生成示例请求,以查看有效请求的外观。

答案 1 :(得分:0)

Doc / lit(至少SOAP 1)应该与WCF一起工作,但我不确定传统(pre -.NET 3.0)Web服务客户端如何处理它。

您是否在Visual Studio中添加了 web 引用或服务引用?如果您添加了 web 引用,则表明您没有使用WCF,这可能是它无法正常工作的原因。如果是这种情况,您应该删除网络参考,看看是否有帮助添加服务参考。

答案 2 :(得分:0)

听起来您生成的代理(通过添加Web引用)不会将xml反序列化为您期望的类型。

正如wierob建议我要做的第一件事是跟踪发送给服务的消息和收到的响应 - 这样你可以检查xml,你可以检查代理是否正在创建一个合适的请求消息并查看响应是否确实包含未反序列化到您期望的对象中的数据

除了tcpmon,您可以使用fiddler(来自microsoft)来跟踪流量,或者最简单的方法是在WCF to log中启用消息跟踪请求和响应文件然后你在service trace viewer tool

中进行了检查

由于存在这些互操作性问题,我发现最好先查看“在网上”的消息 - 然后你可能需要调整wsdl以便正确生成代理或亲自手工制作代理

如果您发布wsdl和您的代理可能会给我们一些关于问题的线索