Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在POST中使用重音字符时,弹簧返回400 问题:_Android_Json_Spring Mvc_Jackson - Fatal编程技术网

Android 在POST中使用重音字符时,弹簧返回400 问题:

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 特定端点

当从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();