1.接到需求开发一个服务接口,因原项目是webservice搭建的,所以再此基础上进行开发。数据传递的格式是xml
2.开发完成后,本地使用axis的api测试通过,可以正常返回数据。代码交给实施人员部署后,调用方反馈有问题soapenv:Server.userException,询问后得知调用方代码是用httpclient调用的,测试工具是用soapui、postman。所以怀疑是调用方式出了问题。
3.因为本人也没有试过用httpclient调用webservice接口,所以比较感兴趣,百度资料后解决了问题,现总结下:
使用的soapui版本是5.1.2,
?处的内容替换为要发送的数据即可,但是要注意当发送的内容是xml格式(含有<或>)时,需要使用<![CDATA[数据]]>,将数据包起来。使用soapui也可以基于http去调用webservice接口,使用rest方式去new project:
![CDATA[数据]]>,将数据包起来。使用soapui也可以基于http去调用webservice接口,使用rest方式去new project:
要注意的是此时要添加请求头SOAPAction,必须要有,值为空没问题。
使用postman的方式,和使用soapui基于http的方式一样。
使用httpclient通过代码调用,同样要添加请求头SOAPAction,并且要注意报文格式。
很多奇怪的问题都是报文格式导致的:
要发送的xml报文一般以<?xml version="1.0" encoding="UTF-8" ?>开头,注意<?xml前面不要有空格、换行,?>后至少要有一组,否则会报错。