Android:BufferedReader在第二次后返回错误的数据

时间:2014-03-08 21:41:35

标签: java android character-encoding android-asynctask bufferedreader

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

我实现了ActionBar pull-to-refresh库,因此人们可以拖动我的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;           尝试{               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();
    }

2 个答案:

答案 0 :(得分:1)

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

self.addConstraint(top)

等等。

答案 1 :(得分:0)

您是否测试了其他编码行BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8"));

您可以在此网页enconding.doc

上查看所有可用的编码