前幾天開發(fā)app時,需要調(diào)用其他系統(tǒng)的數(shù)據(jù)毕贼,該系統(tǒng)開發(fā)人員給我提供了webservice接口温赔。對于從來沒見過webservice接口的我,真的是一臉懵」硌ⅲ現(xiàn)在把記錄一下陶贼,方便自己以后用啤贩,說不定也能幫到正在看這篇文檔的你。
首先需要確認(rèn)拜秧,我這邊寫的是java后臺直接調(diào)用webservice接口痹屹,并且接口后綴為asmx。
下面直接上代碼:
public static void main(String[] args){
String url = "http://192.168.7.2:8000/Webservice1.asmx";// 提供接口的地址
String soapaction = "http://tempuri.org/"; // 域名枉氮,這是在server定義的--不知道的可以問接口提供方志衍,他們一并提供這個
String pageSize = "5";
String pageindex = "1";
Service service = new Service();
try{
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(url);
call.setOperationName(new QName(soapaction, "GetPatyOrganization")); // 設(shè)置要調(diào)用哪個方法
call.addParameter(new QName(soapaction, "pageSize"), // 設(shè)置要傳遞的參數(shù)--要和接口方提供的參數(shù)名一致
org.apache.axis.encoding.XMLType.XSD_STRING,
javax.xml.rpc.ParameterMode.IN);
call.addParameter(new QName(soapaction, "pageindex"), // 設(shè)置要傳遞的參數(shù)
org.apache.axis.encoding.XMLType.XSD_STRING,
javax.xml.rpc.ParameterMode.IN);
call.setReturnType(new QName(soapaction, "GetPatyOrganization"), String.class); // 要返回的數(shù)據(jù)類型(自定義類型,我這邊接口提供方給我返回的是json字符串聊替,所以我用string類型接收楼肪。這個地方一定要設(shè)置好,不然各種報錯很崩潰)
call.setUseSOAPAction(true);
call.setSOAPActionURI(soapaction + "GetPatyOrganization");
String v = (String) call.invoke(new Object[] { pageSize, pageindex });// 調(diào)用方法并傳遞參數(shù)-傳遞的參數(shù)和設(shè)置的參數(shù)要對應(yīng)惹悄,順序不能搞錯了
System.out.print(v);//打印結(jié)果(我設(shè)置的接收格式為json字符串春叫,這邊直接打印出來)
}catch (Exception ex){
ex.printStackTrace();
}
}
嗯,上面這段代碼要想成功運行還需要加載幾個jar包:
activation.jar
axis-1.4.jar
axis-jaxrpc-1.4.jar
commons-discovery-0.5.jar
commons-httpclient.jar
mail.jar
wsdl4j-1.6.3.jar
由于方法中用的幾個接口都是上面幾個jar包提供的泣港,所以缺少jar會報錯暂殖。jar包可以到maven倉庫下載。jar包加好以后当纱,main方法就可以直接運行啦~~~