[亲测可用]springBoot调用对方webService接口的几种方法示例

[亲测可用]springBoot调用对方webService接口的几种方法示例

目录

前言

一、需要用到的maven

二、如何调用webservice接口

调用方法一:

调用方法二:

myEclipse生成的例子:

idea生成的例子:

前言

平常我们开发调用接口一般会用到几种数据格式,比如有restful的,这个是目前最流行的,也是最简单开发的,还有一种就是webservice数据格式,这个应该是很久以前的一些项目是用的这种

那什么是webservice呢,Web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序

在调用别人写好的webservice服务的时候,对方会给你一串schema文件(xsd文件)或者是wsdl结尾的地址,你访问wsdl地址和xsd文件是一样的,比如下面的xsd格式的例子

当然还有很多其他的xsd例子,点击查看:https://my.oschina.net/CraneHe/blog/183471

一、需要用到的maven

org.springframework.boot

spring-boot-starter-ws

1.3.3.RELEASE

wsdl4j

wsdl4j

二、如何调用webservice接口

调用方法一:

最简单的就是用这种方法,可以直接调对方的webService接口

/**

* 调用webservice接口

* 原文章链接:https://blog.csdn.net/qq_27471405/article/details/105275657

* 其他均为盗版,公众号:灵儿的笔记(zygxsq)

*/

public String sendWsdl(Object obj) {

logger.info("--------调用webservice接口begin-------");

// 创建动态客户端

JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();

//对方的wsdl地址

Client client = dcf.createClient("http://xx

.xxx.xx.xx:9556/xxx/ws/getAlarmWs?wsdl");

String json = null;

try {

QName qName = new QName("http://xx.zygxsq.cn/", "getAlarmWs"); //*原文章链接:https://blog.csdn.net/qq_27471405/article/details/105275657 * 其他均为盗版,公众号:灵儿的笔记(zygxsq)

Object[] objects1= client.invoke(qName, "aaa","bbb"); //参数1,参数2,参数3......按顺序放就看可以

json = JSONObject.toJSONString(objects1[0]);

System.out.println("返回数据:" + json.toString());

} catch (Exception e) {

e.printStackTrace();

logger.info("服务器断开连接,请稍后再试");

}

logger.info("--------调用webservice接口end-------");

return json;

}

调用方法二:

得借助开发工具生成代码,比如myEclipse 和 idea 工具

myEclipse 生成的教程可以看下这篇文章:https://www.cnblogs.com/demojie/archive/2017/08/24/java_webservice.html

idea 生成的教程可以看下这篇文章:https://blog.csdn.net/weixin_40699910/article/details/103399292

myEclipse生成的例子:

myEclipse根据xsd文件生成webservice代码教程

1、如果选择本地的wsdl文件,生成后就是这么一堆代码,如图所示

看我截图中显示的一个文件,因为我把wsdl文件是放在D盘目录下, 然后生成的,如果你们是直接用对方url生成的,这里应该就是对方的url地址,当然你也可以跟我一样,放在本地生成,然后改成对方的地址,也是可以的。这个智者见智。

通过myeclipse生成上面的代码之后,不一定就要在myeclipse上面开发,可以copy上面9个这些代码到任何项目地方去,比如idea中,然后就可以通过下面的代码去调用对方

/**

*调用webservice接口

*原文章链接:https://blog.csdn.net/qq_27471405/article/details/105275657

* 其他均为盗版,公众号:灵儿的笔记(zygxsq)

*/

public String sendWsdlWebService(String aaa,String bbb) {

logger.info("--------调用webservice查询接口begin-------");

QueryPowerAlarmResponse queryPowerAlarmResponse=null;

URL url;

String json="";

try {

url = new URL("http://11.111.111.111:9556/xxx/ws/powerAlarmWs?wsdl");

//Qnameqname是qualified name 的简写

//2.构成:由名字空间(namespace)前缀(prefix)以及冒号(:),还有一个元素名称构成

QName qname=new QName("http://xxx.zygxsq.cn/","PowerAlarmImplService");

javax.xml.ws.Service service= javax.xml.ws.Service.create(url, qname); //*原文章链接:https://blog.csdn.net/qq_27471405/article/details/105275657 * 其他均为盗版,公众号:灵儿的笔记(zygxsq)

IPowerAlarm port = service.getPort(IPowerAlarm.class);

PowerAlarmRsp powerAlarmRsp = port.queryPowerAlarm(aaa, bbb);

json = JSONObject.toJSONString(powerAlarmRsp);

// System.out.println("111返回数据:" + json.toString());

}catch (Exception e){

e.printStackTrace();

}

logger.info("--------调用webservice查询接口end-------");

return json;

}

idea生成的例子:

当然,idea也是可以生成代码的,只是相对myeclipse的生成比较麻烦,要引入一堆的maven,然后才能生成,

具体完整的可以参考这篇文章:https://blog.csdn.net/weixin_40699910/article/details/103399292

这里我就不写了,我就在这里写一下要注意的一点:要引入的maven,就是下面这一堆,而且生成代码后,要注释掉这些maven,或者去掉这些maven,不然你每编译一次,就会重新生成一份webSocket的代码。

org.springframework.boot

spring-boot-maven-plugin

org.jvnet.jaxb2.maven2

maven-jaxb2-plugin

0.12.3

generate

WSDL

com.dexcoder.ws

${basedir}/src/main/java

${basedir}/src/main/resources

*.wsdl

参考文章

https://www.cnblogs.com/demojie/archive/2017/08/24/java_webservice.html

https://blog.csdn.net/weixin_40699910/article/details/103399292

感谢原作者的分享,让技术人能够更快的解决问题

相关推荐

殷勤是什么意思
365bet足球信誉开户

殷勤是什么意思

📅 01-01 👁️ 2721
大蒜期货:深度解析其交易特点、市场影响及风险管理
365bet足球信誉开户

大蒜期货:深度解析其交易特点、市场影响及风险管理

📅 07-15 👁️ 594
少帅中喜顺最后怎样了 少帅为什么对喜顺不好
英国正版365官方网站

少帅中喜顺最后怎样了 少帅为什么对喜顺不好

📅 08-06 👁️ 8146