在WebService服务对接中,经常遇到这样的情况,对方服务的wsdl文件以及接口文档已经拿到,但由于这样或那样的原因导致网络一直不通,并且由于项目比较急,为方便边开发边调试,一般解决方法是在己方测试环境部署一个对方的模拟服务。
现有WSDL文件如下:
以下已SpringBoot项目为例,一般有两种方法:
4.0.0
com.lzg.test.ws
SpringBootWSDemo
0.0.1-SNAPSHOT
war
UTF-8
1.8
org.springframework.boot
spring-boot-starter-parent
1.5.7.RELEASE
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-tomcat
org.springframework.boot
spring-boot-starter-tomcat
provided
org.springframework.boot
spring-boot-starter-web-services
wsdl4j
wsdl4j
jaxen
jaxen
org.jdom
jdom2
org.apache.maven.plugins
maven-war-plugin
ws
单击Yes:
查看,生成成功:
配置WebServiceConfig让其继承WsConfigurerAdapter,依次配置消息分发Servlet MessageDispatcherServlet,默认WSDL定义类DefaultWsdl11Definition,加载XSD文件的Bean。
编写模拟服务的接收消息后的处理逻辑LzgRepository。
编写WebService服务的调用入口LzgEndpoint。
启动服务,在浏览器输入:http://localhost:8008/lzg/soap/testWebService.wsdl
查看文件和原WSDL文件比对:
发现丢失
wsdl:portType和wsdl:binding节点也不一致。
通过Postman调用:
URL:http://localhost:8008/lzg/soap/testWebService
参数:raw xml(text/xml)
请求报文:
1111111 22222222222
结果:
测试可以通过。
把上边第4步中的配置的默认WSDL定义类DefaultWsdl11Definition的Bean和加载XSD文件的Bean的代码注释掉,重写一个SimpleWsdl11Definition Bean,在其内直接加载WSDL文件。
发现WSDL完全一致。
测试可以通过。
源码下载