主要兩種方式:手寫 Axis 代碼、Eclipse 自動生成 Client 代碼。後者省事,原理一致。
public class TestWebService {
public static String getResult() throws Exception {
String endpoint = "WebService服務地址";
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL(endpoint));
// SOAP Header 認證示例
Name headerName = new PrefixedQName(new QName("命名空間URL", "string_itemName"));
SOAPHeaderElement header = new SOAPHeaderElement(headerName);
header.addTextNode("blablabla");
call.addHeader(header);
// 定義操作與參數
OperationDesc oper = new OperationDesc();
oper.setName("opName");
oper.addParameter(new ParameterDesc(new QName("", "arg0"), ParameterDesc.IN,
new QName("https://www.w3.org/2001/XMLSchema", "string"), String.class));
// ... arg1, arg2 同理
oper.setReturnType(new QName("https://www.w3.org/2001/XMLSchema", "string"));
oper.setStyle(Style.WRAPPED);
oper.setUse(Use.LITERAL);
call.setOperation(oper);
call.setOperationName(new QName("命名空間URL", "opName"));
return (String) call.invoke(new Object[]{"arg0値", "arg1値"});
}
public static void main(String[] args) { /* 調用並捕獲異常 */ }
}
YourWebServiceNameProxy)。String endpoint = "服務地址";
YourWebServiceNameProxy proxy = new YourWebServiceNameProxy(endpoint);
try {
String result = proxy.opMethod("arg0", "arg1");
System.out.println(result);
} catch (Exception e) { e.printStackTrace(); }
自動生成方式屏蔽了底層 SOAP 組裝細節,開發效率高,適合多數場景。