DataInputStream如何从HttpURLConnection读取?

时间:2016-02-27 08:01:52

标签: java android httpurlconnection

root

           in = new DataInputStream(conn.getInputStream());
            String str = "";
            while (in.available() > 0) {
                str += in.readUTF();
            }

我无法通过上面两种方法从我的php页面读取任何响应。

           in = new DataInputStream(conn.getInputStream());
            String str = "";
            while (in.available() > 0) {
                str2 += Bytes.toString(in.readBytes());
            }

只有这种方法才有效。

有人可以告诉我发生了什么,输入流,类型或字符集的问题。谢谢!

1 个答案:

答案 0 :(得分:1)

readUTF()只能读取writeUTF()写入的数据。除非您知道服务器正在以该格式发送数据,否则您不应该使用它。它不是一种通用的字符串读取方法。

您可能正在寻找BufferedReader.readLine(),但如果不知道您的应用程序有效负载协议,则无法确定。

while ( (str  += in.readLine()) != null && in.ready()){}

+=是错误的操作。这使得以下null测试无法成为现实。使用=,并在循环中追加。 ready()测试在这里也是徒劳的。您在此处测试的是(a)返回一行,以及(b)一些待处理的数据准备好无阻塞地读取。你不在乎(b)。删除它。你可能打算以相反的顺序编写测试,但它仍然是徒劳的。只需阻止readLine().如果您不完全信任服务器,请设置读取超时。