REST WebService中的8编码字符串与Apache CXF
我正在使用CXF 3.0.2在Tomcat 6上的2.5 Web应用程序上设置REST Web服务。 webservice收到一个不带参数的POST请求,并返回一个带有国际字符的JSON字符串(如é,è,à,...)。
问题在于调用应用程序似乎收到了未使用UTF-8编码的字符串。 我尝试过使用SoapUI,但与“RAW视图”(“JSON视图”似乎可以)类似的问题。
我真的不知道可能是什么问题。 实际上,我不知道调用的应用程序是不是以UTF-8读取,或者CXF发送的是非UTF-8编码的响应。
Java REST Web服务:
package test; @Path("/TestService") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON + ";charset=UTF-8") public class TestService { @Path("/indicateurs") @POST public String indicateurs() { return "iiérrràr_îttt"; } }
cxf-servlet.xml:
lt;bean id="testService" class="test.TestService"/> <jaxrs:server id="testRestService" address="/TestService"> <jaxrs:serviceBeans> <ref bean="testService"/> </jaxrs:serviceBeans> <jaxrs:providers> <bean class="org.apache.cxf.jaxrs.provider.json.JSONProvider"> <property name="dropRootElement" value="true" /> <property name="supportUnwrapped" value="true" /> </bean> </jaxrs:providers> </jaxrs:server>
SoapUI JSON视图:
iiérrràr_îttt
SoapUI RAW视图:
HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Date: Tue, 09 Dec 2014 10:54:52 GMT Content-Type: application/json;charset=UTF-8 Transfer-Encoding: chunked Connection: close iiérrrà r_îttt
我设法找到问题。
正如'卢克森'所说的,制片人还行。
调用代码是使用json-smart库的Java中间件,在UTF-8中存在一个问题:https://code.google.com/p/json-smart/issues/detail?id=48。
链接地址: http://www.djcxy.com/p/45621.html