我正在使用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
答案 0 :(得分:2)
我设法找到了问题。
作为&#39; luuksen&#39;说,制片人还可以。
调用代码是使用json-smart库的Java中间件,但UTF-8存在问题:https://code.google.com/p/json-smart/issues/detail?id=48。