2014-02-03 6 views
-1

Есть ли простой способ загрузить небольшую текстовую строку из URL-адреса, такого как этот: «http://app.georeach.com/ios/version.txt» В iOS его довольно просто. Но для android они не находят что-то хорошее. Каков метод получения текста, подобного этому URL?Самый простой способ загрузить текст с URL-адреса

Я использовал этот код в OnCreate Хеллоу приложение, п приложение разбился:

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

Я вижу, как вы реализовали довольно простой. Не уверен, что это еще проще. – nKn

+2

(1) Включить трассировку стека из вашего логарифма. (2) _Необходите какую-либо сетевую связь в основном потоке. –

+0

add 'catch (Exception e) {tv.setText (e.getMessage());}' –

ответ

2

Вам необходимо создать новый класс, расширенный от AsyncTask. Вы не можете делать сетевые материалы в основном потоке. Он может работать, но вы не можете этого делать. Посмотрите на эту ссылку: http://developer.android.com/reference/android/os/AsyncTask.html

Также не забудьте добавить разрешения на доступ к вашему AndroidManifest.xml.

+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 и закройте все потоки.

0

«более простой» путь будет таким:

String url2txt = null; 
try { 
    // Being address an URL instance 
    url2txt = new Scanner(address.openStream(), "UTF-8").useDelimiter("\\A").next(); 
} catch (IOException e) { ... } 

Дело в том, что вы считаете «проще». Что касается кода, возможно, это самый короткий путь, но он зависит от того, что вы хотите сделать после полученного текста.

Смежные вопросы