【问题标题】:Multiple charsets: text/json; Charset=UTF-8;charset=utf-8 OkHttp Header多个字符集:text/json; Charset=UTF-8;charset=utf-8 OkHttp 标头
【发布时间】: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-8charset=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")
  • 是的,我觉得应该是这样的

标签: android okhttp


【解决方案1】:

您应该修复您的服务器以仅发送一次字符集。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-22
    • 1970-01-01
    • 2020-10-26
    • 2021-08-31
    • 2020-03-20
    • 2017-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多