【发布时间】:2020-11-23 18:34:45
【问题描述】:
我正在尝试使用 InputStreamReader 从 InputStream 中获取数据,我的代码如下所示。
protected String doInBackground(String... urls) {
String result = "";
URL url;
HttpURLConnection urlConnection = null;
try {
url = new URL(urls[0]);
urlConnection = (HttpURLConnection) url.openConnection();
InputStream in = urlConnection.getInputStream();
InputStreamReader reader = new InputStreamReader(in);
int data = reader.read();
while (data != -1) {
char current = (char) data;
result += current;
data = reader.read();
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
我在理解上遇到了一个问题,result += current 语句是如何工作的。根据我的理解,似乎char current 数据正在传输到result,但current 是一个转换为char 的整数,如果current 是一个转换为char 的整数,则传输到result。那么,我将如何从 InputStream 中提取每一行,结果打印转换为 char 的整数而不是 InputStream 中的行。
我知道,我想错了,但我无法理解。
请帮助我了解这是如何工作的:)
【问题讨论】:
-
我会使用 BufferedReader,这样我就可以使用 BufferedReader#readLine()。
-
从服务器获取的数据是什么样的?
-
你能指出代码的哪一部分你不明白吗?
-
实际上我获取的数据是网站的html。所以,我到底无法理解的是方法 reader.read() 从服务器读取一行是 html 代码。因此,这个 html 代码是一个字符串类型的数据。但是这里 reader.read() 等于转换为 char current 后的 int 数据,这是在从 int 数据转换为 char 之后将该字符串数据(html 代码)转换为 char current。那么,这怎么可能在字符转换之后将该字符串数据(html 代码)传输到 int 数据?很抱歉语法和拼写错误,我会改进的。谢谢。
标签: java android inputstream inputstreamreader