我使用jdk附带的JAX-WS来创建soap客户端。现在,服务提供商没有公开wsdl。如果我知道提供的服务,如何在没有wsdl的情况下创建soap客户端?
编辑:我可以自由使用任何soap api /工具,不限于JAX-WS。
Edit2:这是点击服务网址时显示的消息。 目前已禁用此服务的元数据发布。 并建议配置服务行为配置。我知道该服务是在.Net中完成的。但是,如何使用提供的服务行为相关的详细信息来访问Java中的服务?
答案 0 :(得分:1)
您可以直接使用HttpClient,但您必须手动编码您发送的每个xml邮件并解析您收到的每封邮件。您也可以手动创建与xml匹配的对象,并使用jaxb来编组或取消编组消息。
答案 1 :(得分:0)
您可以创建一个扩展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;