当前位置:首页 > 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 中的定义。

java 如何调用 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>

动态调用示例:

java 如何调用 wsdl

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

标签: javawsdl
分享给朋友:

相关文章

java如何编程

java如何编程

Java编程基础 Java是一种面向对象的编程语言,广泛应用于企业级开发、移动应用(Android)等领域。以下是Java编程的核心步骤和示例。 环境搭建 安装JDK 从Oracle官网下载适合…

如何学java

如何学java

学习Java的基础知识 Java是一门面向对象的编程语言,掌握基础语法是入门的关键。需要了解变量、数据类型、运算符、控制结构(如if-else、for循环、while循环)、数组等概念。可以通过官方文…

java如何创建对象

java如何创建对象

创建对象的基本方法 在Java中,创建对象主要通过new关键字调用构造函数完成。基本语法为: ClassName objectName = new ClassName(); 例如创建String对象…

如何编译java文件

如何编译java文件

安装JDK 确保系统已安装Java Development Kit(JDK)。可通过命令行输入 javac -version 和 java -version 验证。若未安装,需从Oracle或Open…

java如何配置环境变量

java如何配置环境变量

配置Java环境变量的方法 下载并安装JDK 从Oracle官网或OpenJDK下载适合操作系统的JDK安装包。运行安装程序并按照提示完成安装,记下JDK的安装路径(例如C:\Program File…

java如何遍历map

java如何遍历map

遍历Map的几种方法 在Java中,遍历Map有多种方式,可以根据需求选择合适的方法。以下是常见的几种遍历方式: 使用entrySet遍历 通过entrySet()方法获取键值对的集合,可以同时访问…