【记】调试基于 soap 的 webservice服务异常问题

663 阅读2分钟

提要:本文用于记录本次工作上遇到的问题,仅作各位参考,如有什么地方说得不对,请不要打我

由于工作原因,最近需要帮助到一位同事调试一份对接接口。对方提供的接口是

基于 soapwebservice服务。

至于soap协议是什么东西,简单概括一下就是通过http+xml来实现类似于rpc远程调用,这边不作进一步讲解,有兴趣的同学可以自行上网学习相关资料。

回到本次的主题上面来,由于之前有调试过相关的接口,所以我没咋把这事放心上,把之前调试经验跟同事简单说明了一下,就让他去对照着文档来调试,就在这时候问题来了!!!!!

同事代码一把梭,结果第一个接口就炸了,内部类直接返回{Fault occurred while processing},上网查一下前辈们的经验,都是说有些字段是null传了给服务端,要改成空字符串才行,啊这啊这。我之前对接的时候明明没有这种报错啊,一定是对方接口问题,一定是。。。

接下来就是各种找对方确认传参,接口文档有没有问题。对方的意思是:我们这边都上线好久了,咋别人没事就你有事,你不想想是不是你们自己菜(当然不是直接说出口,也有臆想出来的成分)。时间一秒一秒的过去,原本这事情我一点儿都不重视,后面被正式协调过来帮忙解决问题,花了一天调试没结果。

another day later

实话实说,花了一天功夫还没有头绪,就有点儿捉鸡了。后面想了想同事之前提及到过使用一个工具来调试这个接口,我搜了一下等等等等是下面这个SOAPUI

这真是个宝贝啊,比哆啦A梦还哆啦,只要把对方提供的地址放进去,然后这样这样,那样那样。工具就帮你构建好一个请求的报文了(如下图)

讲到这里其实已经很接近尾声

我照着这个报文,把参数都填好,模拟请求,一切正常。然后用postman把相同的报文传过去,也是正常。

那是扩展类出了问题?nonono,对比了一下xml报文的结构,发现他们数据结构多了一层arg0这个参数。后面把原来的参数,在调用前加上arg0:data就ok了。

全剧终!!!!!!!!!!!!!!!!!