使用 RestTemplate 将 E acute 等特殊字符传递给 JSON webservice

Passing special characters like E acute to JSON webservice using RestTemplate

我正在从数据库获取数据并调用其余 json 网络服务。我正在使用 spring restTemplate 来调用网络服务。我添加了 spring 用来创建 json 的 jackson jar。 但是,当我们得到像带有尖音符号 É 的拉丁语 e 这样的字符时,我会遇到问题。杰克逊不转义它并按原样通过,这里的 webservice 在另一端失败给出 500 内部错误。我需要像 \u0209 一样传递它的 unicode。 我尝试使用 StringEcapeUtils 来转换它,它被转换为 \u0209。 但这次 RestTemplate 再次将其转义为 \u0209 并在目标系统上以 \u0209 接收。

目标系统是另一个我们无法更改的系统。

我的 restTemplate 代码是:-

MultiValueMap<String, String> headers =
        new LinkedMultiValueMap<String, String>();
        headers.add("Content-Type", MediaType.APPLICATION_JSON_VALUE); //Note Content-Type as opposed to Accept

        HttpEntity<Object> entity = new HttpEntity<Object>(myRequest, headers);

        myResponse = restTemplate.postForObject(url, entity, responseClass );

我猜服务器不知道如何解释您发送的内容。你试过了吗

MediaType mediaType = 
    new MediaType( "application" , "json" , Charset.forName( "UTF-8" ) ); 
headers.add( "Content-Type", mediaType );

干杯,

是的,问题是我的客户没有发送字符集。请注意,我更改了 header 我通过 Content-Type

的地方

我的新密码:-

MultiValueMap<String, String> headers =
    new LinkedMultiValueMap<String, String>();
    headers.add("Content-Type", MediaType.APPLICATION_JSON_VALUE + ";charset=UTF-8"); //Note Content-Type as opposed to Accept

    HttpEntity<Object> entity = new HttpEntity<Object>(myRequest, headers);

    myResponse = restTemplate.postForObject(url, entity, responseClass );