本文轉載自:https://www.cnblogs.com/Sabasdian/p/JavaAndWebservice_4.html
未見不允許轉載提示,如有冒犯,請聯繫作者刪除!!!
親測有效!!!
第四種使用java語言調用webservice方法如下:
第四種方法引入的包爲axis的包
import org.apache.axis.*
下面是測試代碼:
public String test() throws Exception
{
//接收返回值
String result ="";
//實例化訪問對象
Service service = new Service();
//實例化調用對象
Call call = (Call) service.createCall();
//在調用對象中添加webservice地址
call.setTargetEndpointAddress(new java.net.URL(webServiceURL));
//在調用對象中添加webservice對應的命名空間,以及將要調用的函數名
call.setOperationName(new QName(namespace,operationName));
//設置入參,第一個參數是命名空間以及參數名,這兩個參數是採用一個Qname變量打包傳入的,第二個參數是入參的類型(字符或者數字)第三個參數是入參種類
//“IN”的含義代表入參
call.addParameter(new QName(namespace,"para1"),
org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
//第二個參數與前面一樣
call.addParameter(new QName(namespace,"para2"),
org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
//是否是soapaction這裏需要看webservice是否要求如下格式,如果沒有要求可以不添加此設置
call.setUseSOAPAction(true);
//設置返回值格式(字符串或者組裝對象)
call.setReturnType(org.apache.axis.encoding.XMLType.SOAP_STRING);
//如果前面要求是soapaction的話需要添加下面這句話,用來之中是訪問那個命名空間上的那個方法
call.setSOAPActionURI(namespace + "/" + operationName);
//調用,參入兩個入參para1和para2的值,並且將返回值轉換爲String類型
result = call.invoke(new Object[]{para1,para2}).toString();
return result;
}
下面是前三種調用方式的傳送門:
http://www.cnblogs.com/Sabasdian/p/JavaAndWebservice_3.html