当前位置:首页 > Java

java如何调用webservice

2026-03-03 12:42:38Java

调用WebService的方法

Java调用WebService可以通过多种方式实现,以下是常见的几种方法:

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

通过JDK自带的wsimport工具生成客户端代码,适用于SOAP协议WebService。

  1. 生成客户端代码 在命令行中执行以下命令:

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

    参数说明:

    • -keep:保留生成的.java文件
    • -p:指定生成代码的包名
    • 最后是WSDL地址
  2. 调用服务

    // 创建服务实例
    ServiceService service = new ServiceService();
    ServicePortType port = service.getServicePort();
    
    // 调用方法
    String result = port.someMethod("param");

使用Apache CXF框架

CXF是一个功能强大的WebService框架,支持SOAP和REST。

java如何调用webservice

  1. 添加Maven依赖

    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-frontend-jaxws</artifactId>
        <version>3.5.5</version>
    </dependency>
  2. 动态调用示例

    JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
    Client client = dcf.createClient("http://example.com/service?wsdl");
    
    Object[] result = client.invoke("methodName", "param1", "param2");
    String response = (String) result[0];

使用Spring Web Services

适用于Spring项目集成WebService调用。

  1. 添加依赖

    java如何调用webservice

    <dependency>
        <groupId>org.springframework.ws</groupId>
        <artifactId>spring-ws-core</artifactId>
        <version>3.1.0</version>
    </dependency>
  2. 配置和使用

    WebServiceTemplate template = new WebServiceTemplate();
    StringResult result = new StringResult();
    
    template.sendSourceAndReceiveToResult(
        "http://example.com/service",
        new StringSource("<request>...</request>"),
        result);
    
    String response = result.toString();

使用HttpURLConnection直接调用

适用于简单的RESTful WebService。

URL url = new URL("http://example.com/api/resource");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");

BufferedReader in = new BufferedReader(
    new InputStreamReader(conn.getInputStream()));
String inputLine;
StringBuilder content = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
    content.append(inputLine);
}
in.close();
String response = content.toString();

使用第三方HTTP客户端

如Apache HttpClient或OkHttp。

Apache HttpClient示例:

CloseableHttpClient client = HttpClients.createDefault();
HttpGet request = new HttpGet("http://example.com/api");
CloseableHttpResponse response = client.execute(request);

String result = EntityUtils.toString(response.getEntity());

注意事项

  • 确保网络连接正常,能访问目标WebService地址
  • 检查WSDL或API文档了解正确的调用方式
  • 处理可能的异常情况,如网络超时、服务不可用等
  • 根据服务要求设置必要的请求头,如Content-Type、Authorization等
  • 考虑使用连接池管理HTTP连接以提高性能

根据具体需求选择合适的调用方式,JAX-WS适合规范的SOAP服务,CXF功能更全面,直接HTTP调用则更灵活轻量。

标签: javawebservice
分享给朋友:

相关文章

如何运行java文件

如何运行java文件

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

java如何上传文件

java如何上传文件

使用HttpURLConnection上传文件 在Java中,可以通过HttpURLConnection实现文件上传功能。需要设置请求头为multipart/form-data,并构建包含文件数据的请…

如何配置java环境变量

如何配置java环境变量

下载并安装JDK 从Oracle官网或OpenJDK项目下载适合操作系统的JDK安装包。运行安装程序,按照提示完成安装,默认路径通常为C:\Program Files\Java\jdk-版本号。 配…

java如何创建包

java如何创建包

创建Java包的步骤 在Java中,包(package)用于组织和管理类文件,避免命名冲突。以下是创建Java包的详细方法: 定义包名 在Java源文件的开头使用package关键字声明包名。包名…

java如何获取当前时间

java如何获取当前时间

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

java如何遍历map

java如何遍历map

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