前景: 很多时候一些老的项目会用到公开的webService接口让我们去调用, 很多初学时会卡在入门依赖上
- 下面是一段正常的调用webService接口的代码使用的是axis1技术
public class CaClient {
public static void main(String[] args) {
try {
String endpoint = "http://localhost:8080/ca3/services/caSynrochnized?wsdl";
// 直接引用远程的wsdl文件
// 以下都是套路
ClassLoader.getSystemClassLoader().loadClass("javax.xml.rpc.ServiceException");
System.out.println(ClassLoader.getSystemClassLoader());
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(endpoint);
call.setOperationName("addUser");// WSDL里面描述的接口名称
call.addParameter("userName",
org.apache.axis.encoding.XMLType.XSD_DATE,
javax.xml.rpc.ParameterMode.IN);// 接口的参数
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);// 设置返回类型
String temp = "测试人员";
String result = (String) call.invoke(new Object[] { temp });
// 给方法传递参数,并且调用方法
System.out.println("result is " + result);
} catch (Exception e) {
System.err.println(e.toString());
}
}
}
这段代码导入以下依赖就不会有爆红提示了,但是仍然存在一些依赖报错
<dependency>
<groupId>org.apache.axis</groupId>
<artifactId>axis</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>javax.xml.rpc</groupId>
<artifactId>javax.xml.rpc-api</artifactId>
<version>1.1.1</version>
</dependency>
以下是可能出现的报错
总结:我们在使用axis1调用webService接口的时候还需要
wsdl解析依赖wsdl4j
和公共组件`commons-discovery依赖
<dependency>
<groupId>wsdl4j</groupId>
<artifactId>wsdl4j</artifactId>
<version>1.6.3</version>
</dependency>
<dependency>
<groupId>commons-discovery</groupId>
<artifactId>commons-discovery</artifactId>
<version>0.5</version>
</dependency>