项目场景:
例如本地环境没有SOAPUI等接口测试工具的情况下测试WEBService接口:
使用Service+Call接口调用方式测试
代码示例
package nc.test;
import java.util.List;
import java.util.Map;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.encoding.XMLType;
import org.apache.axis.Constants;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
public class WSCaller9 {
public static void main(String[] args) {
Object result = null;
try {
Service service = new Service();
Call call = (Call) service.createCall();
// 设置ws地址5
String user="administrator";
String pwd="ufsoft*12345";
call.setTargetEndpointAddress("http://ip:port/uapws/service/nc.itf.uapbd.ws.IQueryInfoService");
// WSDL里面描述的方法名称
call.setOperationName("Get_Info_Frmbarcode");
//模拟登陆
call.setUsername(user);
call.setPassword(pwd);
// 接口的参数
call.addParameter("string", XMLType.XSD_STRING, ParameterMode.IN);// 对应wsdl描述文件里的参数名称;
call.addParameter("string1", XMLType.XSD_STRING, ParameterMode.IN);// 对应wsdl描述文件里的参数名称;
call.addParameter("string2", XMLType.XSD_STRING, ParameterMode.IN);// 对应wsdl描述文件里的参数名称;
// 设置返回类型
call.setReturnType(XMLType.XSD_STRING);
// 给方法传递参数,并调用接收返回结果
result = (Object) call.invoke(new Object[] {"入参1","参数2","入参3"});
//输出到控制台查看返回信息
System.out.println(result.toString());
String i="";
} catch (Exception e) {
//输出到控制台查看异常信息
System.out.println(e.getMessage());
}
}
}
常见问题:
常见问题如下
1、注意引入的Service和Call的包路径是org.apache.axis.client下的
2、url后面加上?WSDL会报异常找不到接口等问题,应去掉后面的?WSDL http://ip:port/uapws/service/nc.itf.uapbd.ws.IQueryInfoService?WSDL;
3、// 接口的参数类型应该和WSDL文件中描述的类型一致 call.addParameter("string", XMLType.XSD_STRING, ParameterMode.IN);
4、// 接口的返回类型应该和WSDL文件中描述的类型一致 call.setReturnType(XMLType.XSD_STRING);