使用 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 );
我正在从数据库获取数据并调用其余 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 );