我使用 jdk 附带的 JAX-WS 来创建肥皂客户端。现在,服务提供者没有公开 wsdl。如果我知道提供的服务,如何在没有 wsdl 的情况下创建肥皂客户端?
编辑:我可以自由使用任何肥皂 api/工具,不限于 JAX-WS。
Edit2:这是点击服务 url 时显示的消息。此服务的元数据发布当前已禁用。并建议配置服务行为配置。我了解该服务是在 .Net 中完成的。但是如何使用提供的服务行为相关细节来访问 Java 中的服务呢?
我使用 jdk 附带的 JAX-WS 来创建肥皂客户端。现在,服务提供者没有公开 wsdl。如果我知道提供的服务,如何在没有 wsdl 的情况下创建肥皂客户端?
编辑:我可以自由使用任何肥皂 api/工具,不限于 JAX-WS。
Edit2:这是点击服务 url 时显示的消息。此服务的元数据发布当前已禁用。并建议配置服务行为配置。我了解该服务是在 .Net 中完成的。但是如何使用提供的服务行为相关细节来访问 Java 中的服务呢?
您可以直接使用 HttpClient,但您必须手动编码您发送的每条 xml 消息并解析您收到的每条消息。您还可以手动创建与您的 xml 匹配的对象并使用 jaxb 来编组/解组消息。
您可以创建一个扩展的客户端服务提供程序javax.xml.ws.Service
,然后覆盖服务构造函数,接受您当前手头的远程服务的 URL。
public class Foo extends Service
{
...
public Foo(URL wsdlLocation)
{
super(wsdlLocation, SERVICE);
}
}
然后在构建 Provider Binding 时,将 URL 显式传递给服务接口。
Foo service = new Foo(url);
BindingProvider binding = (BindingProvider)service;