通过 URL 获取的HttpURLConnection 在用 HttpURLConnection 获取 InputStream HttpURLConnection 被关闭后 InputStream 还可以正常使用吗
时间: 2024-03-11 22:50:52 浏览: 67
在 HttpURLConnection 被关闭后,InputStream 可能会出现一些问题。因为当 HttpURLConnection 被关闭时,它会自动关闭与服务器的连接,这也会导致 InputStream 关闭,如果此时仍然尝试从 InputStream 中读取数据,则会抛出 IOException 异常。为了避免这种情况发生,建议在读取完数据后显式地关闭 HttpURLConnection,以确保 InputStream 也被正确关闭。代码示例:
```
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
InputStream inputStream = connection.getInputStream();
// 读取数据
inputStream.close();
connection.disconnect(); // 显式地关闭 HttpURLConnection
```
相关问题
通过HttpURLConnection获取InputStream的编码
可以通过HttpURLConnection对象的getHeaderField方法获取Content-Type头部信息,进而获取编码信息。示例如下:
```
URL url = new URL("http://www.example.com");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.connect();
String contentType = connection.getHeaderField("Content-Type");
String charset = null;
if (contentType != null) {
String[] values = contentType.split(";");
for (String value : values) {
value = value.trim();
if (value.toLowerCase().startsWith("charset=")) {
charset = value.substring("charset=".length());
break;
}
}
}
InputStream inputStream = connection.getInputStream();
```
在上述代码中,通过获取Content-Type头部信息,遍历其中的各个子项,最终获取到编码信息并保存在charset变量中。最后通过connection.getInputStream()方法获取到输入流。
public InputStream getInputStreamFromDcs(String urlStr) throws IOException { URL url = new URL(urlStr); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(3 * 1000); //防止屏蔽程序抓取而返回403错误 conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)"); //得到输入流 InputStream inputStream = conn.getInputStream(); return inputStream; } 这段代码是干嘛的
这段代码是定义了一个`getInputStreamFromDcs()`方法,用于获取一个URL地址所指向资源的输入流`InputStream`对象。方法实现包括以下几个步骤:
1. 将`urlStr`字符串转换为一个`URL`对象
2. 调用`openConnection()`方法获取该URL地址的`HttpURLConnection`连接对象
3. 设置连接超时时间为3秒
4. 设置请求头信息,模拟浏览器请求,避免被屏蔽
5. 调用`getInputStream()`方法获取输入流对象
6. 将该输入流返回
该方法通常用于从网络上下载文件或资源,可以通过该输入流读取到网络上的资源内容,例如图片、文本、二进制文件等。
阅读全文