带有Apache CXF的REST WebService中的UTF-8编码字符串

时间:2014-12-09 11:21:10

标签: java web-services rest utf-8 cxf

我正在使用CXF 3.0.2在Tomcat 6上的2.5 Web应用程序上设置REST Web服务。 webservice接收不带参数的POST请求,并返回带有国际字符的JSON字符串(如é,è,à,...)。

问题是调用应用程序似乎收到了未编码为UTF-8的String。 我尝试使用SoapUI,但“RAW View”的问题类似(“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

1 个答案:

答案 0 :(得分:2)

我设法找到了问题。

作为&#39; luuksen&#39;说,制片人还可以。

调用代码是使用json-smart库的Java中间件,但UTF-8存在问题:https://code.google.com/p/json-smart/issues/detail?id=48