有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android HTTPUrlConnection响应返回垃圾

下面是我的inputstream头代码

mResponseCode = connection.getResponseCode();

mError = mResponseCode != 200 && mResponseCode != 201 && mResponseCode != 202;

if (mError) {
    inputStream = connection.getErrorStream();
} else {
    inputStream = connection.getInputStream();
}
inputStreamReader = new InputStreamReader(inputStream);
bufferedReader = new BufferedReader(inputStreamReader);

String inputLine;
final StringBuilder builder = new StringBuilder();

while ((inputLine = bufferedReader.readLine()) != null)
    builder.append(inputLine);

resultStr = builder.toString();

但是字符串返回的垃圾值如下“���������������}"

响应头包含Content-Type: application/json; charset=UTF-8,因此我尝试添加

inputStreamReader = new InputStreamReader(inputStream, Charset.forName("UTF-8"));

但是没有帮助

它在邮递员身上工作得很好,所以我知道这项服务没有什么问题

有人能帮忙吗


共 (1) 个答案

  1. # 1 楼答案

    一些服务试图利用标题参数压缩它们生成的数据,如:

    Content-Encoding: SomeKindOfEncoding

    要禁用此功能,请尝试设置接受编码:

    connection.setRequestProperty("Accept-Encoding", "identity");
    

    如果您想在手机上保存一些传输数据,请使用以下命令:

    connection.setRequestProperty("Accept-Encoding", "gzip"); //optional forcing gzip
    //...
    inputStream = new GZIPInputStream(connection.getInputStream());
    //rest of the code