从URL下载文本的最简单方法

时间:2014-02-03 14:31:27

标签: android

是否有最简单的方法从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");
    }

3 个答案:

答案 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) { ... }

事情就是你认为“更容易”。就代码而言,这可能是最短的方式,但这取决于你之后想要用获得的文本做什么。