CXF做了一个webservice服务端供别人调用,我的方法返回字符串里边有<>特殊字符,那边调用后特殊字符被转义了,这个有什么解决办法吗,还有就是那边调用后返回的字符串前后又会被拼接上一些字符串,应该是webservice自己拼上的,请问这个有办法不要吗。
ps:只能改我这边的代码,客户端代码改不了

解决方案 »

  1.   

    最好想办法替换掉特殊字符。
    这个字符转义是组件做的,可以考虑在客户端的jar包中,加一层过滤代码,把转义的字符再转回来。
      

  2.   

    主要是客户端那边改不了,只能在服务端想办法,可以再问一个问题吗,如果webservice返回的是个对象,怎么加上<?xml version="1.0" encoding="UTF-8" standalone="yes"?>这一段呢
      

  3.   

    不是,我现在如果是返回的对象,用soapui显示是这样的,我想在isc标签上面加上,或者有没有能不能通过response方式返回值,不用方法直接返回返回值
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
       <soap:Body>
          <ns2:syncBizOrganizationResponse xmlns:ns2="http://www.sgcc.com/isc/service/">
             <isc>
                <result>0</result>
                <time>2019-09-06 01:55:58</time>
                <description>success</description>
             </isc>
          </ns2:syncBizOrganizationResponse>
       </soap:Body>
    </soap:Envelope>
      

  4.   

    这个需求很怪啊。。
    wsdd文件里加上你这行定义看看能否解析呢?如果不行,那就是不行了。。
      

  5.   

    主要是这样的,现在我要做一个webservice供别人调用,那边给了我一个返回的格式,就是下面这样的,我开始是想直接返回xml格式的String,但是那边接收到的数据<>都转义了,后来我发现如果返回的是一个对象则不会转义,但是也没了<?xml version="1.0" encoding="UTF-8" standalone="yes"?>这一部分,现在就想要么怎么能返回String不被转义,要么返回对象加上这个,试过用CDATA把返回的String包上,但是那边接收到的数据CDATA的<>也被转义了。
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
              <isc>
                <result>0</result>
                <time>2019-09-06 01:55:58</time>
                <description>success</description>
             </isc>
      

  6.   

    或者可不可以把方法设置成void,然后用其它的方式返回值呢,刚开始做webservice什么都不大懂,这个问题卡了2个天了也没找到解决的办法
      

  7.   


    话说没有<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 这个头,就不能解析<isc>了吗?嗯,webservice好久不用了。。得慢慢调试了。。
      

  8.   

    或者可不可以把方法设置成void,然后用其它的方式返回值呢,刚开始做webservice什么都不大懂,这个问题卡了2个天了也没找到解决的办法我记得的返回值,是放在response里定义的。