java - 使用 wsHttpBinding 在 Java 客户端中使用 WCF 服务

标签 java wcf web-services java-metro-framework wshttpbinding

我正在尝试让 Java 客户端与 WCF wshttpbinding WebService 进行通信。但到目前为止我一直不成功。调用要么挂起,要么我得到:“SOAPFaultException:无法处理消息。这很可能是因为操作“http://tempuri.org/ISampleService/GetServiceName”不正确,或者因为消息包含无效或过期的安全上下文 token ,或者因为绑定(bind)之间存在不匹配。如果服务由于不活动而中止 channel ,则安全上下文 token 将无效。为了防止服务过早地中止空闲 session ,增加服务端点绑定(bind)的接收超时。”

我的 Web 服务只是默认的 Visual Studio 2010 生成的“WCF 服务库模板”。

我的 java 客户端是在 netBeans 7.0.1 中生成的, stub 是使用新的其他 --> Web 服务 --> Web 服务客户端生成的,我正在引用本地 WSDL。

我尝试添加 WebServiceFeature wsAddressing = new AddressingFeature(true);在生成的 stub 中,但它只是抛出上面的异常。

我看到其他人也有类似的问题;但是,我没有看到任何真正的解决方案。任何建议将不胜感激。

最佳答案

听起来您遇到了 soap 格式问题。 java 客户端不生成对 WCF 服务有意义的 soap XML。要了解服务期望的 soap XML,请使用 WcfTestClient command line app调用服务。此应用程序在 WinForm 应用程序中动态创建服务代理。在应用程序中,调用服务操作并单击 XML 选项卡(在右 Pane 底部的格式化选项卡旁边)。您将在此选项卡中同时看到请求和响应 soap。

接下来,为 message tracing 配置 WCF 服务并从 java 客户端调用它以查看它正在发送的 soap XML。现在您可以比较这两个 soap 消息,看看有什么不同。需要配置 java 客户端以生成 WCF 期望的 soap 格式。

WCF 团队最近发布了 some WCF interop bindings专门针对java。这些可能不适用于您的具体情况,但可能值得审查。

关于java - 使用 wsHttpBinding 在 Java 客户端中使用 WCF 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7205801/

相关文章:

.net - WCF 客户端-服务器同步 : Polling vs. 绑定(bind)

spring - Jaxb2Marshaller 与 Spring 集成

java - 使用joda时间的两个日期之间的秒差?

java - 无法实例化 UriInfo 指定的类是接口(interface)

java - 有没有办法漂亮地打印 X509Certificate?

c# - 在 WCF 消息格式化程序中实现 Json.NET

WCF 服务 : Status 200 with sc-win32-status of 64

java - 如果数组中已存在数字,则不会跳过?

java代理和Web服务身份验证

WCF DataContract 版本控制