SpringBoot项目使用 axis 调用webservice接口的实践记录

网友投稿 880 2022-09-27

SpringBoot项目使用 axis 调用webservice接口的实践记录

SpringBoot项目使用 axis 调用webservice接口的实践记录

目录序WebService定义个人理解实践webservice 常识一个webservice 接口发布地址往往类似:qq在线接口验证接口为例maven 使用 axis应用依赖(不可缺失必须)代码(粘贴可用)

实际工作场景中会存在对接去很多系统的数据的任务,数据对接呢 方式很多吧,接触过 :

http| https请求数据库视图数据库存储过程soap+xml工单...

然后这两天接到一个关于webservice 数据接口的方式对接,说实话对于这个一脸懵逼,完全不知道是啥(听一个比较年长的大哥说一些比较老的系统中喜欢使用这个进行数据对接)。所以只能学习一下然后进行搞了

WebService

定义

个人理解

通过度娘等方式,个人理解为变相的soap协议加xml工单处理,

实践

webservicehttp:// 常识

一个webservice 接口发布地址往往类似:

qq 在线验证接口:

webxml.com-/webservices…

其他可测试接口:

email电子邮箱地址接口: webxml.com-/WebServices…

全国天气情况接口:

webxml.com-/WebServices…

qq在线接口验证接口为例

在接口后面加:/wsdl webxml.com-/webservices…

访问查看然后找到下图中定义的内容:注意使用关联key找到对应的必要使用的参数。

maven 使用 axis

应用依赖(不可缺失必须)

org.apache.axis

axis

1.4

wsdl4j

wsdl4j

1.6.2

javax.xml

jaxrpc-api

1.1

commons-discovery

commons-discovery

0.2

代码(粘贴可用)

@Test

public void testWebService() {

try {

//wsdl地址

String endpoint = "http://webxml.com-/webservices/qqOnlineWebService.asmx";

//命名空间

String namespace = "http://WebXml.com-/";

//服务名

String serviceName = "qqOnlineWebService";

//方法名

String methodName = "qqCheckOnline";

//soapAction

String soapAction = "http://WebXml.com-/qqCheckOnline";

Service service = new Service();

Call call = (Call) service.createCall();

//设置响应超时

call.setTimeout(3000);

//设置地址

call.setTargetEndpointAddress(new java-.URL(endpoint));

//设置方法名

call.setOperationName(new QName(namespace, methodName));

//设置参数

call.addParameter(new QName(namespace, "qqCode")

, org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);

//设置返回类型

call.setReturnType(XMLType.XSD_SCHEMA);

//启用soap

call.setUseSOAPAction(true);

//设置soapAction

call.setSOAPActionURI(soapAction);

//设置服务名

SOAPService soapService = new SOAPService();

soapService.setName(serviceName);

call.setSOAPService(soapService);

Schema result = (Schema) call.invoke(new Object[]{"xxxxx"});

for (int i = 0; i < result.get_any().length; i++) {

System.out.println(result.get_any()[i]);

}

} catch (Exception e) {

log.error("ddd", e);

}

}

对于以上代码,我这边吐槽一下,网上其实很多这个的例子但是实际调用的时候会出问题,注意点:

设置参数

获取结果

xxxx需要填写真实的QQ号码

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:蛙蛙推荐:给大家介绍两本书《.NET企业应用高级编程》和《ASP.NET电子商务高级编程》
下一篇:kafka的编译和使用
相关文章

 发表评论

暂时没有评论,来抢沙发吧~