使用axis1.4调用webservice有两种简单的方式:
1、直接使用axis提供的API调用,适用于webservice接口的参数和返回值都是String的情况。
try {
Call call = (Call)new Service().createCall();
call.setTargetEndpointAddress("http://192.168.1.234:8080/TestAxis");
Object obj = call.invoke("auth", new String[]{"username","password"});
System.out.println(obj);
} catch (Exception e) {
e.printStackTrace();
}
2、使用axis提供的工具类org.apache.axis.wsdl.WSDL2Java先生成客户端stub,然后像使用本地方法一样调用远程接口。可以按如下方式使用WSDL2Java类,WSDL2Java后面可以是url,也可是是wsdl文件。
java -Djava.ext.dirs=e:/axis/lib org.apache.axis.wsdl.WSDL2Java http://192.168.1.234:8080/TestAxis.wsdl
这样在执行java的当前路径下就会生成TestAxis接口的客户端stub类。然后使用如下方式调用webservice,这种方式适合webservice接口的参数或返回值中包含自定义类的情况。
try {
URL url = new URL("http://192.168.1.234:8080/TestAxis");
TestAxisSoapBindingStub stub = new TestAxisSoapBindingStub(url,new Service());
Account acct = new Account();
acct.setName("username");
acct.setPassword("password");
boolean result = stub.checkAccount(acct);
System.out.println(result);
} catch (Exception e) {
e.printStackTrace();
}
经过测试axis1.4既可以调用axis发布的服务,也可以调用CXF发布的服务。
axis1.4的包见附件。