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());
}
只有这种方法才有效。
有人可以告诉我发生了什么,输入流,类型或字符集的问题。谢谢!
答案 0 :(得分:1)
readUTF()
只能读取writeUTF()
写入的数据。除非您知道服务器正在以该格式发送数据,否则您不应该使用它。它不是一种通用的字符串读取方法。
您可能正在寻找BufferedReader.readLine()
,但如果不知道您的应用程序有效负载协议,则无法确定。
while ( (str += in.readLine()) != null && in.ready()){}
+=
是错误的操作。这使得以下null
测试无法成为现实。使用=
,并在循环中追加。 ready()
测试在这里也是徒劳的。您在此处测试的是(a)返回一行,以及(b)一些待处理的数据准备好无阻塞地读取。你不在乎(b)。删除它。你可能打算以相反的顺序编写测试,但它仍然是徒劳的。只需阻止readLine().
如果您不完全信任服务器,请设置读取超时。