2011-06-28 91 views
12

我正在使用dom解析器獲取頁面源代碼的項目,以獲取vb.net中的字符串中的html源代碼。如何從android中的url獲取HTML源代碼?

1)我想在android中實現相同的功能,通過在android中調用url來獲取網頁源代碼的方法是什麼。 2)我將在一個佈局中爲源代碼提供兩種佈局,而在網頁中則使用其他佈局。如果我正在更改源代碼佈局中的標題標記值,它必須在實際網頁上自動更新?

什麼是在android中做到這一點的最佳方法?

任何形式的幫助將不勝感激。

回答

27

爲了從您可以使用此一網址獲取源代碼:

HttpClient httpclient = new DefaultHttpClient(); // Create HTTP Client 
HttpGet httpget = new HttpGet("http://yoururl.com"); // Set the action you want to do 
HttpResponse response = httpclient.execute(httpget); // Executeit 
HttpEntity entity = response.getEntity(); 
InputStream is = entity.getContent(); // Create an InputStream with the response 
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8); 
StringBuilder sb = new StringBuilder(); 
String line = null; 
while ((line = reader.readLine()) != null) // Read line by line 
    sb.append(line + "\n"); 

String resString = sb.toString(); // Result is here 

is.close(); // Close the stream 

您也可以將某些PARAMS添加到HttpClient的管理超時和其他類似的東西。 例如:

HttpParams httpParameters = new BasicHttpParams(); 
HttpConnectionParams.setConnectionTimeout(httpParameters,3000); // 3s max for connection 
HttpConnectionParams.setSoTimeout(httpParameters, 4000); // 4s max to get data 
HttpClient httpclient = new DefaultHttpClient(httpParameters); 
+0

感謝烏拉圭回合的建議,Lyrkan – mH16

+0

對於你的問題的第二部分,我認爲它不應該處理的問題。我的意思是,對於顯示網頁(而不是源代碼)的佈局,我假設你要使用Webview,所以你只需要通過給它更新源代碼來更新它的內容。 – Lyrkan

+0

它不工作。網頁不可用問題發生。 –

2

您可以使用離子庫從任何URL獲取Html代碼。

轉到項目結構,點擊應用程序,點擊依存關係,點擊'+',只需鍵入ion,您將看到com.koushikdutta.ion:點擊:2.1.8點擊它並點擊確定。現在你可以使用離子庫從URL獲取html代碼。

public class HtmlCode extends Activity { 
    TextView tv; 

    public void onCreate(Bundle s) 
    { 
     super.onCreate(s); 
     setContentView(R.layout.httpexample); 

     tv = (TextView)findViewById(R.id.tvHttp); 
     Ion.with(getApplicationContext()).load("http://www.your_URL.com").asString().setCallback(new FutureCallback<String>() { 
      @Override 
      public void onCompleted(Exception e, String result) { 

       tv.setText(result); 
      } 
     }); 
    } 
}