关于安卓的问题
我把HttpURLConnection定义的变量先赋值为null,进行链接的绑定,但是绑定不上去,一直显示为null,另一个BufferdReader也是这样,但我看网上的帖子或教程,他们这么写没问题,有哪位大佬知道问题出在哪吗


以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
在Android中,HttpURLConnection 是一个抽象类,它提供了许多方法来发送HTTP请求和处理响应。当使用 openConnection() 方法打开连接时,如果指定的URL无法访问(例如,服务器不可达),那么就会抛出一个 IOException。
你的代码中的错误在于尝试将一个已经关闭的连接对象 connection 重新分配给一个新的 HttpURLConnection 对象。在 Android 中,一旦你创建了一个 HttpURLConnection 对象并将其连接打开,你就不能再次改变它的状态或者属性。
如果你想要重用一个已有的 HttpURLConnection 对象,并且希望在每次调用 readLine() 方法之前检查是否还有数据可以读取,你可以这样做:
public void run() {
HttpsURLConnection connection = null;
try {
URL url = new URL(spec: "https://www.csdn.net");
connection = (HttpsURLConnection) url.openConnection();
connection.setConnectTimeout(5000);
connection.setRequestMethod("GET");
connection.setReadTimeout(5000);
// 创建一个缓冲区以缓存输入流
InputStream inputStream = connection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder result = new StringBuilder();
while ((line = reader.readLine()) != null) {
result.append(line);
}
System.out.println(result.toString());
} catch (IOException e) {
e.printStackTrace();
}
}
在这个例子中,我们首先创建了一个新的 HttpURLConnection 对象,然后通过 openInputStream() 方法获取了输入流。接着,我们创建了一个新的 BufferedReader 来缓存这个输入流,以便我们可以逐行读取其中的内容。最后,我们在循环中逐行读取输入流,并将每一行添加到结果字符串中。