gpt4 book ai didi

java - DataInputStream 如何从 HttpURLConnection 读取?

转载 作者:行者123 更新时间:2023-12-01 10:19:53 26 4
gpt4 key购买 nike

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

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

我无法使用上述两种方法从我的 php 页面读取任何响应。

           in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
String str2="";
while ( (str += in.readLine()) != null && in.ready()){}

只有这个方法才有效。

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

最佳答案

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

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

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

+= 这里是错误的操作。它使得以下 null 测试不可能为真。使用 =,并附加到循环内。 ready() 测试在这里也是徒劳的。您在这里测试的是(a)返回一行,(b)一些进一步的数据正在等待准备好读取而不会阻塞。你不关心(b)。删除它。您可能打算以相反的顺序编写测试,但这仍然是徒劳的。只需阻止 readLine()。 如果您不完全信任服务器,请设置读取超时。

关于java - DataInputStream 如何从 HttpURLConnection 读取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35667265/

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