2011-05-23 79 views

回答

21

使用DefaultHttpClient httpclient = new DefaultHttpClient();

HttpGet httppost = new HttpGet("http://www.urlOfThePageYouWantToRead.nl/text.txt"); 
HttpResponse response = httpclient.execute(httppost); 
     HttpEntity ht = response.getEntity(); 

     BufferedHttpEntity buf = new BufferedHttpEntity(ht); 

     InputStream is = buf.getContent(); 


     BufferedReader r = new BufferedReader(new InputStreamReader(is)); 

     StringBuilder total = new StringBuilder(); 
     String line; 
     while ((line = r.readLine()) != null) { 
      total.append(line + "\n"); 
     } 

     TextView.setText(total); 

希望这有助于设置文本中一个TextView做什么分开!

+1

伟大的一段代码,我整天看着这个。 – Nick 2012-03-08 20:24:55

+0

为什么你使用append,如果你以后使用+?它应该是append(line).append('\ n') – 2015-10-04 11:25:42

+1

现在不推荐使用 – Zoe 2016-08-28 19:14:16

6

@BadSkillz是正确的,但在最后的API 9使其错误:

android.os.NetworkOnMainThreadException 

,因为您必须在另一个线程联网操作,因为在主线程联网,使您的应用程序没有响应的任何请求的时间,所以你可以添加这个类到你的活动:

private class GetStringFromUrl extends AsyncTask<String, Void, String> { 

    ProgressDialog dialog ; 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 

     // show progress dialog when downloading 
     dialog = ProgressDialog.show(MainActivity.this, null, "Downloading..."); 
    } 

    @Override 
    protected String doInBackground(String... params) { 

     // @BadSkillz codes with same changes 
     try { 
      DefaultHttpClient httpClient = new DefaultHttpClient(); 
      HttpGet httpGet = new HttpGet(params[0]); 
      HttpResponse response = httpClient.execute(httpGet); 
      HttpEntity entity = response.getEntity(); 

      BufferedHttpEntity buf = new BufferedHttpEntity(entity); 

      InputStream is = buf.getContent(); 

      BufferedReader r = new BufferedReader(new InputStreamReader(is)); 

      StringBuilder total = new StringBuilder(); 
      String line; 
      while ((line = r.readLine()) != null) { 
       total.append(line + "\n"); 
      } 
      String result = total.toString(); 
      Log.i("Get URL", "Downloaded string: " + result); 
      return result; 
     } catch (Exception e) { 
      Log.e("Get Url", "Error in downloading: " + e.toString()); 
     } 
     return null; 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     super.onPostExecute(result); 

     // TODO change text view id for yourself 
     TextView textView = (TextView) findViewById(R.id.textView1); 

     // show result in textView 
     if (result == null) { 
      textView.setText("Error in downloading. Please try again."); 
     } else { 
      textView.setText(result); 
     } 

     // close progresses dialog 
     dialog.dismiss(); 
    } 
} 

和使用,每次你想一击线:

new GetStringFromUrl().execute("http://www.google.com/"); 

通过帮助@Leandros

+0

我不得不使'textView'成为类的成员并通过构造函数链接它,因为'findViewById'在AsyncTask中不可访问。其余的,就像一个魅力! – 2014-12-22 14:02:42

+0

这也被弃用。 – Zoe 2016-08-28 19:16:43

+0

@ Polarbear0106那么新的是什么? – Mohammad7G 2016-10-07 13:37:23