我想检索这个文件的内容并将其保存到一个字符串中。
我试过使用 AsyncTask (基于这个答案),这是我的课。
class RetreiveURLTask extends AsyncTask<Void, Void, String> {
private Exception exception = null;
public String ResultString = null;
protected String doInBackground(Void ... something) {
URL url;
try {
url = new URL("http://stream.lobant.net/ccfm.info");
HttpURLConnection urlConnection;
urlConnection = (HttpURLConnection) url.openConnection();
InputStream in = new BufferedInputStream(urlConnection.getInputStream());
String stream_url = IOUtils.toString(in, "UTF-8");
urlConnection.disconnect();
return stream_url;
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
} catch (Exception e) {
this.exception = e;
return null;
}
}
protected void onPostExecute(String stream_url) {
// TODO: check this.exception
// TODO: do something with the feed
if (this.exception != null)
this.exception.printStackTrace();
this.ResultString = stream_url;
}
}
我试过像这样使用我的 AsyncTask 类:
AsyncTask<Void, Void, String> stream_task = new RetreiveURLTask().execute();
String stream_url = stream_task.ResultString;
但 ResultString 未被识别。
我对这一切如何运作感到困惑。由于 AsyncTask 在后台运行,即使我可以将我的字符串分配给公共变量之一,也不能保证在我进行分配时它是有效的。即使我要使用某种 getResult() 函数,我也需要知道何时调用它,以便代码完成执行。
那么,这通常是如何完成的呢?
(另外,我的 http 读取代码可以吗?)
我的能力:我可以编码,但对 android 很陌生。