使用axis1.4调用WebServices
1 Maven导入依赖
<dependency>
<groupId>org.apache.axis</groupId>
<artifactId>axis</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>commons-discovery</groupId>
<artifactId>commons-discovery</artifactId>
<version>0.2</version>
</dependency>
<dependency>
<groupId>wsdl4j</groupId>
<artifactId>wsdl4j</artifactId>
<version>1.6.3</version>
</dependency>
<dependency>
<groupId>javax.xml</groupId>
<artifactId>jaxrpc</artifactId>
<version>1.1</version>
</dependency>
2 开始调用
package org.rensrm.ws;
import org.apache.axis.AxisFault;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.xml.rpc.ParameterMode;
import java.net.ConnectException;
/**
* @author rensrm on 2021/11/19.
* @version 1.0
*/
public class Test2 {
private static final Logger logger = LoggerFactory.getLogger(Test2.class);
public static void main(String[] args) {
// 要调用的接口的链接
String portalURL = "http://127.0.0.1/services/test?wsdl";
// 根据需求拼接给定的请求报文,无需缩进与换行
StringBuffer sb = new StringBuffer();
sb.append("<?xml version='1.0' encoding='UTF-8'?>");
sb.append("<HEAD>").append("</HEAD>");
sb.append("<BODY>").append("xxxx").append("</BODY>");
String reqXML = sb.toString();
String result = "";
try {
Service service = new Service();
Call call = (Call) service.createCall();
// 设置访问点
call.setTargetEndpointAddress(portalURL);
// 设置操作名
call.setOperationName("接口名填此处");
// 设置参数,这里的场景是只有一个参数,参数名为Req,类型为字符串,入参
call.addParameter("Req", XMLType.XSD_STRING, ParameterMode.IN);
// 设置返回参数类型:字符串
call.setReturnType(XMLType.XSD_STRING);
// 调用接口
result = (String) call.invoke(new Object[]{reqXML});
logger.info("服务调用成功:{}", result);
} catch (AxisFault fault) {
if (fault.detail instanceof ConnectException) {
logger.info("无法连接到操作所请求的服务地址\n请求XML:\n{}\n错误信息:{}", reqXML, fault.getFaultString());
} else if (fault.detail == null) {
logger.info("WebService调用异常\n请求XML:\n{}\n错误信息:{}", reqXML, fault.getFaultString());
} else {
logger.info("服务调用失败\n请求XML:\n{}\n错误信息:{}", reqXML, fault.getFaultString());
}
} catch (Exception e) {
logger.info("其他异常\n请求XML:\n{}\n错误信息:{}", reqXML, e.getMessage());
}
}
}
3 小结
在开发中遇到使用WebServices的需求,这个技术相对比较老了,在网上查资料遇到了很多坑,做完之后索性自己记录一下,希望能帮助到大家。
如有错误欢迎指正!