SpringBoot使用 axis 实现webservice客户端(亲测可行)
Posted 小志的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot使用 axis 实现webservice客户端(亲测可行)相关的知识,希望对你有一定的参考价值。
目录
一、webservice在线验证服务端接口地址
- qq 在线验证接口:http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl
- email在线验证接口:http://www.webxml.com.cn/WebServices/ValidateEmailWebService.asmx?wsdl
- 全国天气在线验证接口:http://www.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl
二、使用 axis 实现webservice客户端代码示例
2.1、服务端地址使用qq在线接口验证接口
- 访问qq 在线验证接口,然后找到下图中定义的内容:
2.2、webservice客户端示例代码
-
pom文件引入依赖
<!-- webservice start --> <dependency> <groupId>org.apache.axis</groupId> <artifactId>axis</artifactId> <version>1.4</version> </dependency> <!-- 解决cell转换问题--> <dependency> <groupId>javax.xml.rpc</groupId> <artifactId>javax.xml.rpc-api</artifactId> <version>1.1.1</version> </dependency> <!--解析调用结果以及数据转换包--> <dependency> <groupId>commons-discovery</groupId> <artifactId>commons-discovery</artifactId> <version>0.2</version> </dependency> <dependency> <groupId>javax.xml.soap</groupId> <artifactId>javax.xml.soap-api</artifactId> <version>1.4.0</version> </dependency> <dependency> <groupId>wsdl4j</groupId> <artifactId>wsdl4j</artifactId> <version>1.6.3</version> </dependency> <!-- webservice end-->
-
示例代码
package com.xz.jdk11.webservice; import lombok.extern.slf4j.Slf4j; import org.apache.axis.client.Call; import org.apache.axis.client.Service; import org.apache.axis.encoding.XMLType; import org.apache.axis.handlers.soap.SOAPService; import javax.xml.namespace.QName; import javax.xml.rpc.ParameterMode; import java.util.HashMap; import java.util.Map; /** * @description: * @author: xz */ @Slf4j public class webServiceClient /** * @param url WSDL的地址 * @param targetNamespace 命名空间,这个地址在你的wsdl打开后可以看到的, * 上面有写着targetNamespace="http://xxx",这个就是你的命名空间值了; * @param method 具体方法的调用URI * */ public static String invokeRemote(String url, String targetNamespace,String serviceName, String method, Map<String, String> param) String qqCode=param.get("qqCode"); log.info("webservice客户端调用[WSDL的地址]url==,[命名空间]targetNamespace==,[方法]method====,[参数]param====",url,targetNamespace,method,param.toString()); String result=""; try //创建服务调用对象 Service service = new Service(); //通过service创建call对象 Call call = (Call) service.createCall(); //设置响应超时 call.setTimeout(3000); call.setTargetEndpointAddress(new java.net.URL(url)); //设置调用方法 call.setOperationName(new QName(targetNamespace,method)); // 设置参数名 :参数名 ,参数类型:String, 参数模式:\\'IN\\' or \\'OUT\\' call.addParameter(new QName(targetNamespace, "qqCode"), XMLType.XSD_STRING, ParameterMode.IN); //设置传入服务端的字符集格式如utf-8等 call.setEncodingStyle("UTF-8"); // 设置返回类型 call.setReturnType(XMLType.XSD_STRING); //启用soap call.setUseSOAPAction(true); //设置soapAction String soapAction=targetNamespace+method; call.setSOAPActionURI(soapAction); //设置服务名 SOAPService soapService = new SOAPService(); soapService.setName(serviceName); call.setSOAPService(soapService); Object obj=null; try // 远程调用 obj=call.invoke(new Object[]qqCode); catch (Exception e) e.printStackTrace(); result =obj.toString(); log.info("soap请求报文===",call.getMessageContext().getRequestMessage().getSOAPPartAsString()); log.info("soap响应报文===",call.getResponseMessage().getSOAPPartAsString()); log.info("result====",result); catch (Exception e) e.printStackTrace(); return result; public static void main(String[] args) String url="http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx"; String targetNamespace="http://WebXml.com.cn/"; String serviceName="qqOnlineWebService"; String method="qqCheckOnline"; Map<String, String> param=new HashMap<>(); param.put("qqCode","1325169021"); invokeRemote(url,targetNamespace,serviceName,method,param);
-
运行查看输出结果
以上是关于SpringBoot使用 axis 实现webservice客户端(亲测可行)的主要内容,如果未能解决你的问题,请参考以下文章
WebService学习之旅使用Apache Axis2实现WebService客户端调用
AXIS2+Myeclipse实现WebService数据库存储简单实例
Axis2生成wsdl客户端代码并实现webservice调用