当前位置:首页 > Java

java 如何调用 wsdl

2026-03-03 12:07:03Java

调用 WSDL 的步骤

使用 wsimport 工具生成客户端代码

在 Java 中调用 WSDL 服务,可以通过 JDK 自带的 wsimport 工具生成客户端代码。该工具能够解析 WSDL 文件并生成相应的 Java 类和接口。

运行以下命令生成客户端代码:

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

-keep 参数保留生成的源文件,-verbose 显示详细输出信息。生成的代码包括服务接口、数据绑定类等。

通过生成的客户端调用服务

生成代码后,可以直接在 Java 项目中导入并使用这些类。示例代码如下:

import com.example.Service;
import com.example.ServicePortType;

public class WsdlClient {
    public static void main(String[] args) {
        Service service = new Service();
        ServicePortType port = service.getServicePort();
        String result = port.someMethod("parameter");
        System.out.println("Result: " + result);
    }
}

ServiceServicePortType 是生成的类,具体名称取决于 WSDL 中的定义。

使用 Apache CXF 动态调用

如果需要动态调用 WSDL 服务,可以使用 Apache CXF 框架。CXF 提供了更灵活的方式来调用 Web 服务,无需预先生成代码。

添加 CXF 依赖:

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

动态调用示例:

import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;

public class DynamicWsdlClient {
    public static void main(String[] args) {
        JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
        factory.setServiceClass(ServicePortType.class);
        factory.setAddress("http://example.com/service");
        ServicePortType client = (ServicePortType) factory.create();
        String result = client.someMethod("parameter");
        System.out.println("Result: " + result);
    }
}

处理复杂数据类型

如果 WSDL 服务涉及复杂数据类型,确保生成的客户端代码包含相应的数据绑定类。在使用时,直接实例化这些类并填充数据。

示例:

import com.example.ComplexType;

ComplexType request = new ComplexType();
request.setField1("value1");
request.setField2(123);
String result = port.complexMethod(request);

配置安全性和超时

对于需要认证或超时设置的 WSDL 服务,可以通过绑定提供者配置。示例配置如下:

java 如何调用 wsdl

import javax.xml.ws.BindingProvider;
import java.util.Map;

Map<String, Object> requestContext = ((BindingProvider) port).getRequestContext();
requestContext.put(BindingProvider.USERNAME_PROPERTY, "username");
requestContext.put(BindingProvider.PASSWORD_PROPERTY, "password");
requestContext.put("javax.xml.ws.client.connectionTimeout", "5000");
requestContext.put("javax.xml.ws.client.receiveTimeout", "10000");

使用 SOAPUI 测试 WSDL

在开发阶段,可以使用 SOAPUI 工具测试 WSDL 服务是否可用。SOAPUI 提供了图形界面,方便发送请求和查看响应。通过测试可以验证服务端点、操作和数据类型是否正确。

标签: javawsdl
分享给朋友:

相关文章

java如何编译

java如何编译

编译Java程序的基本步骤 安装JDK(Java Development Kit)并配置环境变量。确保javac和java命令可在命令行中运行。JDK是编译和运行Java程序的必备工具。 创建Jav…

如何配置java环境

如何配置java环境

下载JDK安装包 访问Oracle官网或OpenJDK官网,选择适合操作系统的JDK版本(如Windows、macOS或Linux)。下载完成后,运行安装程序并按照提示完成安装。 设置环境变量 右键…

java中如何输入

java中如何输入

输入方法 在Java中,可以通过多种方式实现输入操作,具体取决于输入来源和需求。以下是几种常见的输入方法: 使用Scanner类 Scanner类是Java中最常用的输入工具,适用于从控制台或文件读…

java如何调试

java如何调试

调试Java程序的基本方法 使用IDE内置的调试工具(如IntelliJ IDEA或Eclipse)是最常见的方式。在代码行号旁点击设置断点,启动调试模式后,程序会在断点处暂停,允许查看变量值、调用栈…

php 实现 java md5加密

php 实现 java md5加密

PHP 实现 Java MD5 加密 Java 和 PHP 的 MD5 加密结果可能存在差异,主要由于字符编码和输出格式的不同。以下是确保 PHP 与 Java MD5 加密结果一致的方法。 确保字…

java实现vue接口

java实现vue接口

Java 实现 Vue 接口的方法 在 Java 中实现 Vue 前端调用的接口,通常需要使用 Spring Boot 框架构建 RESTful API。以下是具体的实现步骤和代码示例。 创建 Sp…