第三種使用java語言調用webservice方法如下:
第三種方法引用的是javax包
下面是測試代碼:
public String test() throws Exception
{
//用來存放返回值串
String result = "";
try
{
//這一句的作用是定義系統的操作變量,有些程序在不添加這段代碼的時候也運行正常。
System.setProperty(org.apache.axis.client.ServiceFactory.SERVICEFACTORY_PROPERTY,"org.apache.axis.client.ServiceFactory" );
//定義訪問變量,參數一位webservice的訪問地址,參數二位webservice使用的命名空間
QName servicename = new QName(webServiceURL,namespace);
//定義操作變量,操作變量中傳入的參數為前面已經定義的訪問變量
javax.xml.rpc.Service service = ServiceFactory.newInstance().createService(servicename);
//實例化調用變量
javax.xml.rpc.Call call = service.createCall();
//添加調用地址
call.setTargetEndpointAddress(webServiceURL);
//添加調用的函數的命名空間以及函數名稱
QName operationname = new QName(namespace, operationName);
//設置調用操作
call.setOperationName(operationname);
//定義傳入的參數,參數1是入參名大小寫敏感,參數2為參數類型(字符/數字……),參數3為參數類型(入參/出參)
call.addParameter("para1",XMLType.XSD_STRING,ParameterMode.IN );
//第二個參數的定義同上
call.addParameter("para2",XMLType.XSD_STRING,ParameterMode.IN );
//定義返回值的格式,第一個參數為命名空間,第二個參數為返回值類型,這里需要注意的是返回值的類型是webservice開發商提供,我們需要與其保持一致
QName returnname = new QName(namespace, "string");
call.setReturnType(returnname, String.class);
//進行調用傳入對應入參的值,並且將返回的對象轉換為字符串。
result = call.invoke(new Object[]{para1,para2}).toString();
//異常處理
if(result==null)
{
result = "";
}
}
catch (ServiceException e)
{
e.printStackTrace();
}
catch (RemoteException e)
{
e.printStackTrace();
}
catch (Exception e)
{
e.printStackTrace();
}
return result;
}
下面是第一種和第二種調用方式的傳送門,感興趣的朋友可以也去看看。