Android 在POST中使用重音字符时,弹簧返回400 问题:
当从Android应用程序发送POST请求时,重音字符会导致Jackson在对象映射阶段失败,但在使用用于chrome的高级Rest客户端插件时效果良好 这让我相信这个问题与Android代码如何发送请求有关,但我尝试添加对UTF-8的显式引用,但没有成功。当我在执行过程中调试流程时,所有值似乎都是正确的 背景: 我正在Android上开发一个应用程序,该应用程序连接到一个公开Spring中实现的端点的服务器。该服务器是使用SpringMVC开发的,并使用GoogleAppEngine 特定端点可以接收用户输入的值,其中可能包括重音字符 有效负载遵循此结构,映射到服务器端的对象:Android 在POST中使用重音字符时,弹簧返回400 问题:,android,json,spring-mvc,jackson,Android,Json,Spring Mvc,Jackson,当从Android应用程序发送POST请求时,重音字符会导致Jackson在对象映射阶段失败,但在使用用于chrome的高级Rest客户端插件时效果良好 这让我相信这个问题与Android代码如何发送请求有关,但我尝试添加对UTF-8的显式引用,但没有成功。当我在执行过程中调试流程时,所有值似乎都是正确的 背景: 我正在Android上开发一个应用程序,该应用程序连接到一个公开Spring中实现的端点的服务器。该服务器是使用SpringMVC开发的,并使用GoogleAppEngine 特定端点
{
"senderEmail":"<email here>",
"token":"<token here>",
"friendList":["<email here>"],
"base64Value":"<base64 encoded value here>",
"message":"ú"
}
在Android中使用以下代码时得到相同的响应:
HttpPost httpPost = new HttpPost(Api.URL_POST);
httpPost.setEntity(new StringEntity(jsonObject.toString()));
httpPost.setHeader("Accept", "application/json");
httpPost.setHeader("Content-type", "application/json");
HttpResponse resp = new DefaultHttpClient().execute(httpPost);
Spring方法定义,包含在用@RestController注释的控制器中:
@RequestMapping(value= "/post", method = RequestMethod.POST)
public ResponseEntity<Object> post(@RequestBody PostRequest postRequest) { /*code here*/}
找到以下正确编码有效负载的代码片段,并且在服务器端也能正确接收 谢谢大家
OutputStream os = urlConnection.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));
writer.write( jsonObject.toString() );
writer.close();
os.close();
int httpResponseCode = urlConnection.getResponseCode();
@RequestMapping(value= "/post", method = RequestMethod.POST)
public ResponseEntity<Object> post(@RequestBody PostRequest postRequest) { /*code here*/}
OutputStream os = urlConnection.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));
writer.write( jsonObject.toString() );
writer.close();
os.close();
int httpResponseCode = urlConnection.getResponseCode();