我需要在我正在构建的 Java Web 应用程序中调用一些 Web 服务方法。
例如,每次用户注册时,我都想newUser
通过 Java 调用 WSDL url 上的方法。我需要在请求中传递一些参数。
是否有任何内置的 Java 类或任何公开可用的类可以使这变得容易,即我只提供 URL 和参数,它执行请求并返回响应?
如果不是,那么在 Java 应用程序中调用 WSDL 上的 Web 服务的标准方法是什么?
我需要在我正在构建的 Java Web 应用程序中调用一些 Web 服务方法。
例如,每次用户注册时,我都想newUser
通过 Java 调用 WSDL url 上的方法。我需要在请求中传递一些参数。
是否有任何内置的 Java 类或任何公开可用的类可以使这变得容易,即我只提供 URL 和参数,它执行请求并返回响应?
如果不是,那么在 Java 应用程序中调用 WSDL 上的 Web 服务的标准方法是什么?
在已部署的 WSDL URL 上运行 wsimport,您可以从 JDK 运行它:
wsimport -p client -keep http://localhost:8080/calculator?wsdl
这一步将生成并编译一些类。注意 -keep 开关,你需要它来保存生成的 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);
}
}
如果您使用的是 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);
}
}