当前位置:首页 > Java

java如何调用wsdl接口

2026-03-04 07:13:33Java

调用WSDL接口的方法

使用JAX-WS生成客户端代码

通过wsimport工具生成客户端存根代码,该工具是JDK自带的。假设WSDL地址为http://example.com/service?wsdl,执行以下命令:

wsimport -keep -p com.example.client http://example.com/service?wsdl

参数说明:

  • -keep:保留生成的.java源文件
  • -p:指定生成代码的包名

生成后会在指定包路径下创建服务端点和接口类,直接实例化即可调用:

MyService service = new MyService();
MyServicePortType port = service.getMyServicePort();
String result = port.someMethod(param1, param2);

动态代理方式调用

不生成静态代码,运行时动态创建代理:

URL wsdlUrl = new URL("http://example.com/service?wsdl");
QName serviceName = new QName("http://example.com/", "MyService");
Service service = Service.create(wsdlUrl, serviceName);
MyServicePortType port = service.getPort(MyServicePortType.class);

使用Apache CXF框架

添加Maven依赖:

<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-frontend-jaxws</artifactId>
    <version>3.5.5</version>
</dependency>

代码实现:

JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(MyServicePortType.class);
factory.setAddress("http://example.com/service");
MyServicePortType client = (MyServicePortType) factory.create();
client.someMethod(param);

处理WS-Security等扩展

对于需要安全认证的接口,CXF提供WS-Security支持:

java如何调用wsdl接口

Map<String, Object> props = new HashMap<>();
props.put(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN);
props.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);
props.put(WSHandlerConstants.PW_CALLBACK_CLASS, ClientPasswordCallback.class.getName());

JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.getOutInterceptors().add(new WSS4JOutInterceptor(props));

注意事项

  • 生成的客户端代码需与服务端保持版本同步
  • 复杂类型可能需要额外处理数据绑定
  • 生产环境建议添加连接超时设置:
    BindingProvider bp = (BindingProvider)port;
    bp.getRequestContext().put(BindingProviderProperties.CONNECT_TIMEOUT, 10000);
    bp.getRequestContext().put(BindingProviderProperties.REQUEST_TIMEOUT, 30000);

标签: 接口java
分享给朋友:

相关文章

vue调用后台接口实现

vue调用后台接口实现

Vue 调用后台接口的实现方法 在 Vue 中调用后台接口通常涉及以下几个关键步骤: 安装必要的依赖 确保项目中安装了 axios 或 fetch 等 HTTP 请求库。通过以下命令安装 axios…

如何打开java

如何打开java

打开 Java 程序的方法 通过命令行运行 Java 程序 确保已安装 Java Development Kit (JDK) 并配置环境变量。使用 javac 编译 .java 文件,生成 .clas…

如何运行java文件

如何运行java文件

运行Java文件的方法 确保已安装Java Development Kit (JDK),可通过命令行输入java -version和javac -version验证安装。 编写Java代码并保存为.…

如何编写java程序

如何编写java程序

安装开发环境 下载并安装JDK(Java Development Kit),推荐从Oracle官网或OpenJDK获取最新版本。安装完成后配置环境变量,确保JAVA_HOME和PATH正确设置。 选…

java如何获取当前时间

java如何获取当前时间

获取当前时间的方法 在Java中,可以通过多种方式获取当前时间。以下是几种常见的方法: 使用 java.util.Date Date currentDate = new Date(); Syste…

java如何实现异步

java如何实现异步

Java实现异步的方法 Java中实现异步编程可以通过多种方式,每种方式适用于不同的场景和需求。以下是常见的实现方法: 使用Thread类 创建新线程执行异步任务是最基础的方式。通过继承Thread…