gpt4 book ai didi

java - 从 .NET 使用 Java Web 服务

转载 作者:行者123 更新时间:2023-12-01 16:40:34 25 4
gpt4 key购买 nike

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

更新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 

这对我来说看起来不对!

更新 2:解决方案(某种)

问题在于响应的命名空间与客户端代理类使用的命名空间不同。这样该对象就永远不会被正确反序列化。有一次,我更改了命名空间以匹配响应命名空间,它工作得很好。但现在如果我更新 Web 服务引用,我将再次遇到相同的问题,因为命名空间将被更新。有什么好的方法可以解决这个问题呢?我能想到的唯一解决方案是要求 Web 服务的创建者使用正确的命名空间。

最佳答案

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

服务引用 - 这是调用 Microsoft WCF Web Services 3.5 及更高版本的专用方式。Web 服务引用 - 引用非 Microsoft Web 服务和较低版本的 Microsoft Web 服务(例如 2.0)的方式

我们也可以在非Microsoft Web服务中使用Service引用,我们只需要修改app.config中的一些配置,例如Security Configurations()

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

(这是由于代理命名空间预期响应与实际 xml 命名空间 Web 服务响应之间的差异造成的)

示例:代理代码[返回:System.Xml.Serialization.XmlElementAttribute("GetResponse ", Namespace = "http://AJ_TUASON.COM ")]

公共(public) GetResponse Get(){}

[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, 命名空间 = "http://AJ_TUASON.COM")]

公共(public)分部类GetResponse{}

实际 XML 命名空间响应

webservice:GetResponse xmlns:"http://AJTUASON.COM"

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

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

将实际的 xml 命名空间响应粘贴到 .NET 的代理类中:

示例:[返回:System.Xml.Serialization.XmlElementAttribute("GetResponse ", Namespace = "http://AJTUASON.COM ")]公共(public) GetResponse Get(){}

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

这将解决 Null 问题。

注意:不要总是依赖生成代理类的工具。工具当然可以翻译,但进行分析是另一回事 - AJ

关于java - 从 .NET 使用 Java Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4024348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com