是否有最简单的方法从URL下载小文本字符串,如下所示:“http://app.georeach.com/ios/version.txt” 在iOS中它非常简单。但对于android而言,他们找不到好的东西。从上面的URL获取文本的方法是什么?
我在hello app的onCreate中使用了这个代码,n app崩溃了:
try {
// Create a URL for the desired page
URL url = new URL("http://app.georeach.com/ios/version.txt");
// Read all the text returned by the server
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
String str;
StringBuilder sb = new StringBuilder(100);
while ((str = in.readLine()) != null) {
sb.append(str);
// str is one line of text; readLine() strips the newline character(s)
}
in.close();
tv.setText(sb.toString());
} catch (MalformedURLException e) {
tv.setText("mal");
} catch (IOException e) {
tv.setText("io");
}
答案 0 :(得分:2)
您必须创建一个从AsyncTask扩展的新类。你不能在主线程中做网络的东西。它可以工作,但你可能不想那样做。请看一下这个链接:http://developer.android.com/reference/android/os/AsyncTask.html
另外,不要忘记向AndroidManifest.xml添加Internet权限。
答案 1 :(得分:1)
试试这个:
URL url = new URL("http://bla-bla...");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
InputStream in = connection.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(in));
StringBuilder sb = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
sb.append(line);
}
// your text is here
String text = sb.toString()
不要忘记捕获并处理IOException
并关闭所有流。
答案 2 :(得分:0)
“更容易”的方式是:
String url2txt = null;
try {
// Being address an URL instance
url2txt = new Scanner(address.openStream(), "UTF-8").useDelimiter("\\A").next();
} catch (IOException e) { ... }
事情就是你认为“更容易”。就代码而言,这可能是最短的方式,但这取决于你之后想要用获得的文本做什么。