如何在Java中调用WSDL URL上的Web服务?

Cli*_*ote 3 java soap wsdl web-services playframework-2.0

我需要在我正在构建的java Web应用程序中调用一些Web服务方法.

例如,每次用户注册时,我都希望newUser通过Java在WSDL URL上调用该方法.我需要传递一些带有请求的参数.

是否有任何内置的Java类或任何公开可用的类,这可以使这很容易,即我只提供URL和参数,它执行请求并返回响应?

如果没有,在Java应用程序中调用WSDL上的Web服务的标准方法是什么?

Avi*_*ngh 10

在已部署的WSDL URL上运行wsimport,您可以从JDK运行它:

wsimport -p client -keep http://localhost:8080/calculator?wsdl
Run Code Online (Sandbox Code Playgroud)

此步骤将生成并编译一些类.注意-keep switch,你需要它来保存生成的Java源文件.

Calculator.java - 服务端点接口或SEI
CalculatorService - 生成的服务,实例化它

public class MyClientServiceImpl {
    public static void main(String args[]){

    @Override
    public Integer add(int a , int b) {
       CalculatorService service = new CalculatorService();
       Calculator calculatorProxy = service.getCalculatorPort();            
        /**
         * Invoke the remote method
         */
        int result = calculatorProxy.add(10, 20);
        System.out.println("Sum of 10+20 = "+result);
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您使用的是Java EE 6支持的容器,那么您可以这样使用它,

public class MyClientServiceImpl implements MyClientService {

    @WebServiceRef(wsdlLocation = "http://localhost:8080/calculator?wsdl", 
value = CalculatorService.class)
    private Calculator service;

    @Override
    public Integer add(int a , int b) {
        return service.add(a,b);
    }
}
Run Code Online (Sandbox Code Playgroud)