java - 另一个 .Net 使用 Java WSDL 问题

标签 java .net web-services

这个问题可能已经得到解答,但我只是找不到它,所以如果需要,请随时指出。

我有一个 JAVA WSDL 端点,可以成功地使用它来生成引用。我还使用了该端点的程序员发送的 WSDL,并再次成功创建了要使用的类文件。

但是,当我创建提供此服务所需的对象时,在这两种情况下,我都会收到一条错误,指出他无法使用我发送的有效负载。

使用 SoapUI 工具查看它,似乎他的服务期望在有效负载标记中提供更多信息,而这些信息似乎并未包含在我的类中。

示例:我可以创建 <Tag1></Tag1>但他需要<init:Tag1></init:Tag1>

我不知道“init”前缀在哪里被删除。

我正在使用 VS 2010 并生成一个简单的 Web 引用。此时任何提示都会有所帮助。

最佳答案

我解决这些问题的方法是这样的:

使用相同技术的客户端连接到服务。 追踪线路上的消息。如果有必要,可以去掉签名和加密,以便获得可读的 XML 消息。

现在,使用不同技术的客户端(在本例中为 .NET)构建客户端 stub 并连接到服务。追踪线路上的消息。

比较两者,并调整不同技术的客户端以使其匹配。

我使用 Fiddler2 来捕获 HTTP 消息的痕迹。如果您不使用 HTTP,那么您将需要其他东西。

<小时/>

请记住,您想要的不是字符串相等,而是 XML 信息集中的相等。

类似 <init:Tx> 的元素可能相当于 <Tx> ,如果后一种情况下的默认命名空间与前一种情况下的 init 命名空间匹配。如果您不太明白这意味着什么,那么您需要阅读 xml namespace 并熟悉这些概念。

在很多情况下,我发现 XML 命名空间不一致问题导致了互操作性的缺乏。在一种情况下,我发现 namespace 上缺少斜杠(http://foo/bar 而不是 http://foo/bar/ )足以导致通信失败。弄清楚要调整什么以使实际消息与需求消息相匹配有点像魔术 - 我不知道如何解释它。

在某些情况下,我会通过修改 WSDL 文档来让不同技术的客户端执行我想要的操作。

祝你好运。

关于java - 另一个 .Net 使用 Java WSDL 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5863073/

相关文章:

java - Struts 2 - 设置 bean Action

.net - .net 中的 com+ 替代方案?

java - 向 OSGi JAX-RS 资源添加方面

java - 将多个 blob 上传到 Azure 存储

java - 我在 JpaQuery spring-boot 中遇到空异常

java - Java 的隐藏特性 - ArrayList/实例初始化器说明

c# - 在 PropertyGrid 中过滤枚举属性的下拉列表

.net - 使用ResumableUploader将大型视频文件(mp4,130兆字节)上传到YouTube

oracle - 通过 PL/SQL 访问 HTTPS Web 服务的问题

MySQL 到 postgreSQL 迁移