碰到这样一个奇怪的问题:
用cxf根据wsdl文件生成webservice客户端
通过生成的类方法调用service
请求正常,返回也正常。
但是————
譬如返回的应该是两个值,但是在生成的客户端的类方法里面,完全找不到一个方法或者属性来得到其中的一个返回值。(即应该返回的两个值中,一个能正常取得并返回,一个完全不知道如何得到)。
令我觉得奇怪的是,虽然根据wsdl文件生成的类里面没有方法或者属性得到这个返回值,可是在tomcat服务器的控制台打印出来的response xml中却两个属性返回值都有。到底这是为什么呢?
求解!!!!
高手帮帮忙吧!
用cxf根据wsdl文件生成webservice客户端
通过生成的类方法调用service
请求正常,返回也正常。
但是————
譬如返回的应该是两个值,但是在生成的客户端的类方法里面,完全找不到一个方法或者属性来得到其中的一个返回值。(即应该返回的两个值中,一个能正常取得并返回,一个完全不知道如何得到)。
令我觉得奇怪的是,虽然根据wsdl文件生成的类里面没有方法或者属性得到这个返回值,可是在tomcat服务器的控制台打印出来的response xml中却两个属性返回值都有。到底这是为什么呢?
求解!!!!
高手帮帮忙吧!
在webService中多个值时,需要多数据做封装处理,封装格式可以按情况定义,一般采用xml或者json例如 json封装一个user对象,其中有userName,password两个数据.
public String getUser(){
StringBuilder result = new StringBuilder();
result.append("{\"userName\":\"testUserName\",\"passWord\":\"testPassWord\"}");
return result.toString();
}
大概是你说的差不多吧!我意思是预想的正确返回结果比如应该是<id>01</id><name>xyz</name>
可是,返回的只有name的值,比如:<id></id><name>xyz</name>。
因为cxf生成的类里面找不到获取id这个值的方法,只有获取name的方法。
可是tomcat服务器控制台打印的返回的soap却是正确的:<id>01</id><name>xyz</name>我就想问,为什么用cfx根据wsdl文件生成的类里会找不到获取id值的方法呢???
不过网上苦查了一翻,好像找到了答案。
原因是webservice那段的代码没写好的缘故,
貌似少写了些annotation来设置那个返回值了。
所以用cxf就没有生成出来了。
于是后来没用cxf,直接用HttpURLConnection去请求webservice,返回的soap正确。