<h2 style="font-family:inherit;font-weight:500;line-height:1.2;color:rgb(0,0,0);margin-top:20px;margin-bottom:15px;font-size:20px;">前言https://blog.csdn.net/dbeautifulLife/article/details/78326662</h2><p style="margin-top:0px;margin-bottom:10px;">前面我们已经整合实现了web service的服务端:<a href="http://www.dexcoder.com/selfly/article/4594" style="background-color:transparent;color:rgb(51,122,183);text-decoration:none;" target="_blank">Spring Boot整合spring-ws开发web service</a></p><p style="margin-top:0px;margin-bottom:10px;">接下来就是实现客户端进行调用了。</p><h2 style="font-family:inherit;font-weight:500;line-height:1.2;color:rgb(0,0,0);margin-top:20px;margin-bottom:15px;font-size:20px;">添加依赖</h2><p style="margin-top:0px;margin-bottom:10px;">客户端,同样的需要先添加依赖:</p><ol class="linenums list-paddingleft-2" style="margin:0px;color:rgb(30,52,123);"><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li></ol><h2 style="font-family:inherit;font-weight:500;line-height:1.2;color:rgb(0,0,0);margin-top:20px;margin-bottom:15px;font-size:20px;">获取wsdl文件</h2><p style="margin-top:0px;margin-bottom:10px;">服务端由一个xsd文件开始,客户端则是由一个wsdl文件开始。</p><p style="margin-top:0px;margin-bottom:10px;">获取wsdl文件也十分简单,用浏览器访问web service地址,然后另存为即可。当然也可以直接用url地址来生成代码,只不过我习惯本地另存为后再生成。</p><p style="margin-top:0px;margin-bottom:10px;">完整的wsdl文件内容如下:</p><ol class="linenums list-paddingleft-2" style="margin:0px;color:rgb(30,52,123);"><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li></ol><h2 style="font-family:inherit;font-weight:500;line-height:1.2;color:rgb(0,0,0);margin-top:20px;margin-bottom:15px;font-size:20px;">添加maven的jaxb2插件生成代码</h2><p style="margin-top:0px;margin-bottom:10px;">跟服务端根据xsd来生成代码类似,客户端同样可以根据wsdl来生成代码。maven插件依赖:</p><ol class="linenums list-paddingleft-2" style="margin:0px;color:rgb(30,52,123);"><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li></ol><p style="margin-top:0px;margin-bottom:10px;">同样mvn install之后将生成客户端代码。这里生成的代码跟我们前面发布的服务端代码应该是一样的,当然包名可能不同这个由你指定。</p><p style="margin-top:0px;margin-bottom:10px;">在生成代码的同时会生成文件夹,这个可以移到resources目录下或者直接删除都没有关系。生成后的项目结构图:</p><p style="margin-top:0px;margin-bottom:10px;"><img src="http://static.dexcoder.com/images/201621/1jC3cCdJOvGLwbGd.png" alt="项目结构" title="项目结构图"/></p><h2 style="font-family:inherit;font-weight:500;line-height:1.2;color:rgb(0,0,0);margin-top:20px;margin-bottom:15px;font-size:20px;">编写ws客户端</h2><p style="margin-top:0px;margin-bottom:10px;">生成了代码之后,编写客户端变的很容易,具体代码如下:</p><ol class="linenums list-paddingleft-2" style="margin:0px;color:rgb(30,52,123);"><li><p></p></li><li><p><br/></p></li><li><p></p></li><li><p><br/></p></li><li><p></p></li><li><p></p></li><li><p><br/></p></li><li><p></p></li><li><p></p></li><li><p><br/></p></li><li><p></p></li><li><p></p></li><li><p></p></li></ol><h2 style="font-family:inherit;font-weight:500;line-height:1.2;color:rgb(0,0,0);margin-top:20px;margin-bottom:15px;font-size:20px;">配置ws客户端</h2><p style="margin-top:0px;margin-bottom:10px;">编写完一切代码之后,同样需要配置到spring boot才行,指定刚才生成代码所在的包名,它会到该包下去寻找相应的类自动进行数据转换:</p><ol class="linenums list-paddingleft-2" style="margin:0px;color:rgb(30,52,123);"><li><p></p></li><li><p></p></li><li><p><br/></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p><br/></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li></ol><h2 style="font-family:inherit;font-weight:500;line-height:1.2;color:rgb(0,0,0);margin-top:20px;margin-bottom:15px;font-size:20px;">运行</h2><p style="margin-top:0px;margin-bottom:10px;">到这里所有的调用代码都已经完成了,剩下的就是运行来检测是否调用成功。</p><p style="margin-top:0px;margin-bottom:10px;">这里我们来编写一个来简单测试一下。</p><ol class="linenums list-paddingleft-2" style="margin:0px;color:rgb(30,52,123);"><li><p></p></li><li><p></p></li><li><p><br/></p></li><li><p></p></li><li><p></p></li><li><p><br/></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li><li><p></p></li></ol><p style="margin-top:0px;margin-bottom:10px;">使用了,直接将调用ws返回的数据用json格式输出到页面。</p><p style="margin-top:0px;margin-bottom:10px;">启动spring boot,访问http://localhost:8081/callws 这里把端口换成了8081,因为默认的8080已经被前面的服务端占用了。</p><p style="margin-top:0px;margin-bottom:10px;">可以看到成功调用了ws的服务端并返回了数据,hello部分为我们发送过去的参数:</p><p style="margin-top:0px;margin-bottom:10px;"><img src="http://static.dexcoder.com/images/201621/R6QRSKr2JKe0XFWX.png" alt="ws客户端返回数据" title="ws客户端返回数据"/></p><p><br/></p>