Axis 调用 WebService 接口

本贴最后更新于 593 天前,其中的信息可能已经事过景迁

前言

最近需要对接另一个系统提供的 WebService 接口,在网上查了很多种方法都不行,这里记录一下我使用的方法,仅供大家参考。注意我这里使用的是 Axis 而不是 Axis2,可能是提供的 WebService 接口版本太老了,我使用 Axis2 也无法调用。

实现

引入 Maven

<!-- Axis 调用 WebService 接口 Start --> <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> <dependency> <groupId>org.apache.geronimo.bundles</groupId> <artifactId>commons-discovery</artifactId> <version>0.4_1</version> </dependency> <!-- Axis 调用 WebService 接口 End -->

三个包都必须引入,不然会报错。

代码

@Slf4j public class WebServiceUtil { private final static String URL = "http://ip:port/WebService/WebServiceSOAP2.asmx"; private final static String AUTH_KEY = "123"; /** * 发送请求 * * @param localPart 接口名 * @param desc 接口描述 * @param params 请求参数 * @param rClass 响应实体 * @return R */ @SneakyThrows private static <Q, R> R request(String localPart, String desc, Q params, Class<R> rClass) { // 转换为xml String requestXml = XmlUtil.beanToXML(params); log.info("WebService-{}接口请求参数为:{}", desc, requestXml); Service service = new Service(); Call call = (Call) service.createCall(); call.setTimeout(30000); call.setTargetEndpointAddress(new URL(URL)); call.setSOAPActionURI("http://tempuri.org/" + localPart); // 设置操作的名称 call.setOperationName(new QName("http://tempuri.org/", localPart)); // 设置返回的数据类型 call.setReturnType(XMLType.XSD_STRING); // 设置参数 call.addParameter(new QName("http://tempuri.org/", "authkey"), XMLType.XSD_STRING, ParameterMode.IN); call.addParameter(new QName("http://tempuri.org/", "Request_Xml"), XMLType.XSD_STRING, ParameterMode.IN); // 执行调用 String responseXml = (String) call.invoke(new Object[]{AUTH_KEY, requestXml}); // 解析 log.info("HisWebService-{}接口请求成功,响应参数为:{}", desc, responseXml); return JSONUtil.xmlToJson(responseXml).getJSONObject("Response").toBean(rClass); } }

出入参按照接口要求来传,代码仅供参考。

  • Axis
    1 引用
  • Web
    119 引用 • 433 回帖 • 8 关注
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3194 引用 • 8214 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...