【发布时间】:2015-04-30 20:58:52
【问题描述】:
获取多个字符集:text/json; Charset=UTF-8;charset=utf-8 OkHttp 标头,同时使用 okHttp 库调用服务器。有人知道我该如何解决这个问题。
public String post(String url, RequestBody body) {
Request request = new Request.Builder()
.url(url)
.addHeader("Content-Type","text/json;Charset=UTF-8")
.post(body)
.build();
String str_response="";
Response response;
try {
response = client.newCall(request).execute();
try {
str_response = response.body().string();
System.out.println("POST_BODY_RESPONSE: "+" url "+url+" strresp "+str_response);
} catch (Exception ex){
ex.printStackTrace();
Log.e("POST_BODY_RESPONSE: ",url+" resp "+str_response);
}
} catch (SocketTimeoutException e) {
// TODO Auto-generated catch block
e.printStackTrace();
str_response = "";
}catch (ConnectTimeoutException e) {
// TODO Auto-generated catch block
e.printStackTrace();
str_response = "";
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
str_response = "";
}
return str_response;
}
04-30 15:27:12.118: W/System.err(7502): java.lang.IllegalArgumentException: 多个字符集: text/json;字符集=UTF-8;字符集=utf-8 04-30 15:27:12.118: W/System.err(7502): at com.squareup.okhttp.MediaType.parse(MediaType.java:64)
04-30 15:27:12.118: W/System.err(7502): at com.squareup.okhttp.Call$RealResponseBody.contentType(Call.java:252)
04-30 15:27:12.118: W/System.err(7502): at com.squareup.okhttp.ResponseBody.charset(ResponseBody.java:86)
04-30 15:27:12.118: W/System.err(7502): at com.squareup.okhttp.ResponseBody.string(ResponseBody.java:82)
04-30 15:27:12.128: W/System.err(7502): at app.app.utils.OkHttp.post(OkHttp.java:75)
04-30 15:27:12.128: W/System.err(7502): at app.app.fragment.Login$2.run(Login.java:226)
04-30 15:27:12.128: W/System.err(7502): at java.lang.Thread.run(Thread.java:856)
【问题讨论】:
-
我认为不可能同时传递不同的字符集。同时通过
Charset=UTF-8和charset=utf-8的原因是什么?下面是 gitHub 中 okhttp 的代码,看看为什么会变成异常:github.com/square/okhttp/blob/master/okhttp/src/main/java/com/… -
当我删除 addHeader(); 时出现同样的问题;我也应该删除服务器端的字符集编码吗?
-
我认为你应该只在两边留下一个字符集(例如charset=utf-8)
-
例如.addHeader("Content-Type","Charset=UTF-8")
-
是的,我觉得应该是这样的