2010-10-26 81 views
0

我有一个用Java编写的Web服务,现在我想要在.NET世界中使用该Web服务。我使用WSDL向我的.NET应用程序添加代理类,但是当我调用Java Web服务方法时,响应始终为空。任何人都熟悉这个问题?从.NET使用Java Web服务

更新1:

我注意到另一件事是,我打开svcinfo文件中的一个,发现下面的代码:

<endpoint normalizedDigest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;http://fff.mywebserive/somewebservie&quot; binding=&quot;basicHttpBinding&quot; bindingConfiguration=&quot;DOC_TOI_Binding&quot; contract=&quot;ServiceReference1.DOC_TOI_PortType&quot; name=&quot;DOC_TOI_Port&quot; /&gt;" digest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data 

这不右看看我!

UPDATE 2:溶液(种)

的问题是,所述响应产生了不同的命名空间比所使用的客户端代理类。这样该对象从未反序列化正确。有一次,我改变了命名空间以匹配它工作正常的响应命名空间。但是现在如果我更新Web服务引用,我将再次得到相同的问题,因为命名空间将被更新。什么是解决这个问题的好方法?我能想到的唯一解决方案是要求webservice的创建者使用正确的名称空间。

+0

如果您可以联系Web服务的创建者,那么这样做,但要确保这是您的问题的正确解决方案。 – Bernard 2010-10-26 15:47:27

回答

2

它暗示我的WSDL或你的客户端是不正确的。客户端应该无法从WSDL中知道它实现的是哪种语言。请检查您的名称空间。

SOAP UI是测试SOAP服务的非常好的工具。我会推荐它来整理这个问题。

在我看来像是试图逃脱那个片段的东西。你不想要&gt;你想要>

你需要确保服务和客户端使用相同的命名空间。沟通是最重要的。

+0

非常感谢!我正在检查Fiddler,它显示响应被正确地发回,但由于某些原因,.NET无法处理响应,并且始终返回null。 – johndoe 2010-10-26 14:19:46

+0

请阅读我的更新回复!我在.NET项目中的一个svcinfo xml文件中发现了一些奇怪的代码。 – johndoe 2010-10-26 14:25:40

4

使用.Net,我们可以使用服务参考或Web服务参考在我们的应用程序中添加java web服务。

服务参考 - 这是调用Microsoft WCF Web Services 3.5和更高版本的专用方式。 Web服务引用 - 引用非微软的Web服务和Web服务微软较低版本的方式,例如2.0

我们也可以使用非微软网络服务业务的参考,我们只需要修改的app.config一些配置如安全配置()

现在,当调用Web服务请求方法时,它总是以NULL对象响应结束。

样品(这是由代理命名空间预期响应和实际的XML命名空间web服务响应之间的差异引起的): 代理代码 [返回:System.Xml.Serialization.XmlElementAttribute(“的GetResponse “命名空间=” http://AJ_TUASON.COM“)]

公共的GetResponse获取() {}

[系统。 Xml.Serialization。XmlTypeAttribute(AnonymousType =真,命名空间= “http://AJ_TUASON.COM”)]

公共部分类的GetResponse {}

实际XML名称空间响应

web服务:的GetResponse的xmlns :“http://AJTUASON.COM

要解决此问题,请安装fiddler2。这将帮助您跟踪并确认Web服务工作正常。

然后,从Web服务中复制XML响应中的实际名称空间。

粘贴代理类.NET的实际XML命名空间响应:

样品: [返回:System.Xml.Serialization.XmlElementAttribute( “的GetResponse”,命名空间=“http://AJTUASON.COM “)] 公共的GetResponse获取() {}

[System.Xml.Serialization.XmlTypeAttribute(AnonymousType =真,命名空间=” http://AJTUASON.COM“)] 公共部分类的GetResponse {}

这将解决Null问题。

注意:不要总是依靠生成代理类的工具。工具可以肯定地翻译,但做分析是另一回事 - AJ

+0

我有类似的问题,我必须通过修复命名空间来解决它。 – Gomes 2013-05-10 13:36:07