首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 客戶端調用 WebService (JAX-RPC 風格) 示例

     編輯:Java 相關知識

場景

使用 JDK 內置 javax.xml.rpc (JAX-RPC) 動態調用遠程 WebService,無需生成 Stub 代碼。

核心代碼

import javax.xml.rpc.Call;
import javax.xml.rpc.Service;
import javax.xml.rpc.ServiceException;
import java.io.*;
import java.util.Properties;

public class WsClient {
    public static void main(String[] args) throws Exception {
        // 1. 讀取配置
        Properties prop = new Properties();
        try (InputStream in = WsClient.class.getClassLoader().getResourceAsStream("datasource.properties")) {
            prop.load(in);
        }
        String endpoint = prop.getProperty("url", "none");

        // 2. 創建動態調用
        Service service = new Service();
        Call call = (Call) service.createCall();
        call.setTargetEndpointAddress(endpoint);
        call.setOperationName("getRefInfo"); // 遠程方法名

        // 3. 調用並獲取結果
        String cardInNo = "123456";
        String jsonResult = (String) call.invoke(new Object[]{cardInNo});
        System.out.println("返回結果:" + jsonResult);
    }
}

配置文件 datasource.properties

url=https://localhost:8090/bid/services/HelloWorld

關鍵點說明

  • Service.createCall() 創建動態調用對象。
  • setTargetEndpointAddress 指定 WSDL 服務地址(實際為端點 URL)。
  • setOperationName 對應 WSDL 中的 operation 名稱。
  • invoke(Object[]) 參數順序必須與 WSDL 定義一致。

現代替代方案

  1. JAX-WS (wsimport):生成強類型 Stub,IDE 友好,標準化。
  2. Apache CXF / Spring WebServiceTemplate:企業級框架,支持攔截器、異步、安全。
  3. HTTP Client + XML/JSON 手工解析:輕量、無依賴,適合簡單 REST 風格服務。

注意

JAX-RPC 已在 Java EE 6 中標記為過時,Java 9+ 模塊化移除,新項目請勿使用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved