gpt4 book ai didi

java - Android:BufferedReader 第二次后返回错误数据

转载 作者:行者123 更新时间:2023-12-01 13:18:20 25 4
gpt4 key购买 nike

我正在开发一个 Android 应用程序,它使用 AsyncTasks 来从应用程序 API 获取 JSON 数据。当我启动应用程序时,一切都很顺利,应用程序从 API 中获取正确的信息。

我实现了 ActionBar 下拉刷新库,以便人们可以向下拖动我的 ListView 来刷新他们的数据。现在我的应用程序在此时崩溃了。

我的 BufferedReader.readline 返回这样的字符串,而不是接收任何文本。

���ĥS��Zis�8�+(m��L�ޔ�i}�l�V�8��$AI0��(YN�o�lI�,9cO�V͇�    $��F���f~4r֧D4>�?4b�Տ��P#��|xK#h�����`�4@H,+Q�7��L�

每次我的应用程序想要接收数据时,都会创建一个新的 AsyncTask,所以我不知道为什么我的阅读器会返回类似的内容...

我希望你们能给我任何解决这个问题的想法!

编辑:这就是我获取数据的方式。

BufferedReader reader = null; try { reader = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8")); } catch (IOException e1) { e1.printStackTrace(); }

    String s = null;
String data = "";
try {
while ((s = reader.readLine()) != null)
{
data += s;
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

最佳答案

我刚刚遇到了同样的问题。我发现返回的 HTML 可能被压缩为 GZIP 格式。使用类似的方法来检查编码,并使用适当的流来解码内容:

URL urlObj = new URL(url);
URLConnection conn = urlObj.openConnection();

String encoding = conn.getContentEncoding();
InputStream is = conn.getInputStream();
InputStreamReader isr = null;

if (encoding != null && encoding.equals("gzip")) {
isr = new InputStreamReader(new GZIPInputStream(is));
} else {
isr = new InputStreamReader(is);
}

reader = new BufferedReader(isr);

等等。

关于java - Android:BufferedReader 第二次后返回错误数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22275438/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com