- 1 Maven导入依赖
- 2 开始调用
- 3 小结
2 开始调用org.apache.axis axis 1.4 dom4j dom4j 1.6.1 commons-discovery commons-discovery 0.2 wsdl4j wsdl4j 1.6.3 javax.xml jaxrpc 1.1
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;
public class Test2 {
private static final Logger logger = LoggerFactory.getLogger(Test.class);
public static void main(String[] args) {
// 要调用的接口的链接
String portalURL = "http://127.0.0.1/services/test?wsdl";
// 根据需求拼接给定的请求报文,无需缩进与换行
StringBuffer sb = new StringBuffer();
sb.append("");
sb.append("").append("");
sb.append("").append("xxxx").append("");
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的需求,这个技术相对比较老了,在网上查资料遇到了很多坑,做完之后索性自己记录一下,希望能帮助到大家。
如有错误欢迎指正!



