当前位置:首页 > 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 服务,可以通过绑定提供者配置。示例配置如下:

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 提供了图形界面,方便发送请求和查看响应。通过测试可以验证服务端点、操作和数据类型是否正确。

java 如何调用 wsdl

标签: javawsdl
分享给朋友:

相关文章

java如何创建文件

java如何创建文件

使用 File 类创建文件 通过 File 类的 createNewFile() 方法创建文件。此方法返回布尔值,表示文件是否成功创建。 import java.io.File; import ja…

java如何输入数据

java如何输入数据

输入数据的方法 在Java中,输入数据可以通过多种方式实现,具体取决于输入来源(如控制台、文件、网络等)。以下是几种常见的方法: 使用Scanner类从控制台输入 Scanner类是Java中最常…

如何运行java项目

如何运行java项目

运行Java项目的步骤 确保Java环境已安装 在运行Java项目前,需确认系统已安装Java Development Kit(JDK)。通过命令行输入java -version和javac -ver…

java如何导包

java如何导包

导入包的方法 在Java中,导入包(package)可以通过import语句实现,用于引入其他类或包中的功能。以下是几种常见的导包方式: 导入单个类 import java.util.ArrayL…

java如何连接mysql

java如何连接mysql

连接 MySQL 数据库的基本步骤 添加 MySQL 驱动依赖 在项目中引入 MySQL 的 JDBC 驱动。如果使用 Maven,在 pom.xml 中添加以下依赖: <dependency…

如何安装java软件

如何安装java软件

下载Java安装包 访问Oracle官方网站或OpenJDK开源项目页面,选择适合操作系统的Java版本(如Windows、macOS或Linux)。对于个人使用,通常下载JDK(Java Devel…