碰到这样一个奇怪的问题:
用cxf根据wsdl文件生成webservice客户端
通过生成的类方法调用service
请求正常,返回也正常。
但是————
譬如返回的应该是两个值,但是在生成的客户端的类方法里面,完全找不到一个方法或者属性来得到其中的一个返回值。(即应该返回的两个值中,一个能正常取得并返回,一个完全不知道如何得到)。
令我觉得奇怪的是,虽然根据wsdl文件生成的类里面没有方法或者属性得到这个返回值,可是在tomcat服务器的控制台打印出来的response xml中却两个属性返回值都有。到底这是为什么呢?
求解!!!!
高手帮帮忙吧!

解决方案 »

  1.   

    不明白你要讲什么,难道方法可以返回2个数据结果?
    在webService中多个值时,需要多数据做封装处理,封装格式可以按情况定义,一般采用xml或者json例如 json封装一个user对象,其中有userName,password两个数据.
    public String getUser(){
    StringBuilder result = new StringBuilder();
    result.append("{\"userName\":\"testUserName\",\"passWord\":\"testPassWord\"}");
    return result.toString();
    }
      

  2.   


    大概是你说的差不多吧!我意思是预想的正确返回结果比如应该是<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值的方法呢???
      

  3.   

    等了一段时间,都还是没有新的回答啊!
    不过网上苦查了一翻,好像找到了答案。
    原因是webservice那段的代码没写好的缘故,
    貌似少写了些annotation来设置那个返回值了。
    所以用cxf就没有生成出来了。
    于是后来没用cxf,直接用HttpURLConnection去请求webservice,返回的soap正确。