调用webservice时遇到传参的问题,经过搜索得到解决方案
使用axis传参时,在设定参数时,不使用服务端定义的参数名,而是arg0~argN来定义。
上整个调用webservic代码以留后用。
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
public class WebServicesClient {
public static void main(String[] args) {
try {
//webservicURL
String endpoint = "http://localhost:8080/ws_server/weather";
Service service = new Service();
Call call = (Call) service.createCall();
//设置目标端点地址
call.setTargetEndpointAddress(endpoint);
//WSDL里面描述的接口名称
call.setOperationName(new QName("http://impl.webservice.weather.test.com/","testInterface"));
/*
* 在设定参数时,不使用服务端定义的参数名,而是arg0~argN来定义
*/
call.addParameter("arg0", XMLType.XSD_STRING,
ParameterMode.IN);
call.setReturnType(XMLType.XSD_STRING);//设置返回类型
String temp = "测试人员";
//给方法传递参数,并且调用方法
String result = (String)call.invoke(new Object[]{temp});
System.out.println("返回结果: "+result);
}
catch (Exception e) {
System.err.println(e.toString());
}
}
}