Java 响应http响应体的编码

Java 响应http响应体的编码,java,http,https,okhttp,Java,Http,Https,Okhttp,我正在使用okhttp库向restapi发送请求。这是我向https发送请求的java代码: RequestBody body = RequestBody.create(JSON, requestBody); Request request = new Request.Builder().url("https://examplesite.com/json/").post(body) .addHeader("Accept", "application/json,

我正在使用
okhttp
库向restapi发送请求。这是我向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���#联合国安全理事会�

以上文字的编码是什么

这是响应头:

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
库处理加密和描述数据。

删除此:

 .addHeader("Accept-Encoding", "gzip")
当您这样做时,您告诉OkHttp您想要管理自己的响应压缩

如果您没有显式配置
接受编码
,OkHttp将为您提供帮助。它将向请求中添加标头,并解压缩响应

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,但仍然无法解包defalte,它返回如下:U��N�0  E���k{���4v |]W�vۑ⸊��8. 删除添加标题接受编码没有帮助