public static void main(String[] args){
// 參數(shù)列表
String param1 = "xxx";
String param2 = "xxx";
.....
Object[] o = {param1 , param2 ,....};
callWebserviceASMX("SendSms",o);
}
public static void callWebserviceASMX(String method, Object[] o) {
//獲取webservice接口地址
String url = "xxxx.asmx";
//獲取域名地址抠艾,server定義的
String soapaction = "xxx";
Service service = new Service();
try {
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(url);
//設(shè)置要調(diào)用的方法
call.setOperationName(new QName(soapaction,method));
// 設(shè)置要傳遞的參數(shù)
call.addParameter(new QName(soapaction, "param1"),
org.apache.axis.encoding.XMLType.XSD_STRING,
javax.xml.rpc.ParameterMode.IN);
call.addParameter(new QName(soapaction, "param2"),
org.apache.axis.encoding.XMLType.XSD_STRING,
javax.xml.rpc.ParameterMode.IN);
//設(shè)置要返回的數(shù)據(jù)類(lèi)型
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);
call.setUseSOAPAction(true);
call.setSOAPActionURI(soapaction+method);
//調(diào)用方法并傳遞參數(shù)
String result = (String) call.invoke(o);
System.out.println("result is:::"+result);
} catch (Exception e) {
e.printStackTrace();
}
}
中途報(bào)了幾個(gè)缺少jar包的錯(cuò)低散,看了下別人的博客,然后引入一下就行了
上面這個(gè)方法調(diào)用成功后缎浇,我作為接口用dubbo+zookeeper發(fā)布到一個(gè)公司的接口管理平臺(tái)扎拣,結(jié)果其他端調(diào)用這個(gè)接口時(shí),Service創(chuàng)建不了素跺,找不Service這個(gè)類(lèi)二蓝,據(jù)說(shuō)是包沒(méi)導(dǎo),然后導(dǎo)了也沒(méi)用指厌,于是我又換了另外一種方式刊愚,
public void sendMsg(Map map) throws Exception{
String phoneStr = (String) map.get("phoneStr");
String msg = (String) map.get("msg");
String sendTime = (String) map.get("sendTime");
Object[] o = {phoneStr,msg,sendTime};
String url = Configuration.getInstance().getValue("xxx");
String ECID = Configuration.getInstance().getValue("xxx");
String UserCode = Configuration.getInstance().getValue("xxx");
String UserPass = Configuration.getInstance().getValue("xxx");
Object[] o1 = {ECID,UserCode,UserPass};
Object[] params = new Object[o.length+o1.length];
//這里是因?yàn)橛幸恍┡渲檬侵苯釉趐roperties文件里寫(xiě)的然后參數(shù)順序也固定,所以我就通過(guò)復(fù)制數(shù)組的方式踩验,把傳過(guò)來(lái)的參數(shù)和配置放一起了
System.arraycopy(o1,0,params,0,o1.length);
System.arraycopy(o,0,params,o1.length,o.length);
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
String webServicePath = url;
Client client = null;
client = dcf.createClient(webServicePath);
client.invoke("SendSms",params);
}
這個(gè)方式在其他端就可以正常調(diào)用了