【问题标题】:encoding of response http response body响应 http 响应体的编码
【发布时间】:2016-07-13 12:16:39
【问题描述】:

我正在使用okhttp 库来向rest api 发送请求。这是我向https发送请求的java代码:

RequestBody body = RequestBody.create(JSON, requestBody);

    Request request = new Request.Builder().url("https://examplesite.com/json/").post(body)
            .addHeader("Accept", "application/json, text/javascript, */*; q=0.01")
            .addHeader("Accept-Encoding", "gzip").addHeader("Accept-Language", "en-US,en;q=0.8,fa;q=0.6,ar;q=0.4")
            .build();

    Response response = client.newCall(request).execute();
    String res = new String(response.body().string().getBytes("UTF-8"));

    System.out.println(res);

res 变量是:�CU8{$���'L�@R�W*�$��b�H�E�l�K�C� 30��}c&,p��q���)+3�R�28���#SC�

以上文字的编码是什么?

这是响应头:

Accept:application/json, text/javascript, */*; q=0.01
Accept-Encoding:gzip, deflate
Accept-Language:en-US,en;q=0.8,fa;q=0.6,ar;q=0.4
Connection:keep-alive
Content-Length:95
Content-Type:application/json

我不明白响应正文的编码是什么。无论我何时通过 chrome 上的邮递员扩展发送请求,响应正文都是普通的 json。 注意协议是https,我认为okhttp库处理加密和解密数据。

【问题讨论】:

    标签: java http https okhttp


    【解决方案1】:

    删除这个:

     .addHeader("Accept-Encoding", "gzip")
    

    当您这样做时,您是在告诉 OkHttp 您想要管理自己的响应压缩。

    如果你没有明确配置Accept-Encoding,OkHttp 会照顾你。它将标头添加到请求中,并解压缩响应。

    【讨论】:

    • ? 火箭科学!谢谢。
    【解决方案2】:
    String commentUri = "http://comment.bilibili.com/4.xml";
    
        Log.d("request_comment url", commentUri);
        Request requestComment = new Request.Builder()
                .addHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8")
    //                .addHeader("Accept-Encoding", "gzip, deflate")
                .addHeader("Connection", "keep-alive")
                .addHeader("Accept", "*/*")
                .url(commentUri)
                .build();
    

    我遇到了同样的问题,我用okhttp 3.2.0这样,但仍然无法解压,它返回如下:U��n�0E���k{���4v|]W�vۑ⸊ ��8

    删除添加标头接受编码没有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-12
      • 1970-01-01
      • 1970-01-01
      • 2017-12-06
      • 1970-01-01
      相关资源
      最近更新 更多