很少說直接上代碼:html
一、activity 的onCreate 方法,從佈局中獲得WebView引用,並設置相關參數 <!-- lang: java --> @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); webView = (WebView) findViewById(R.id.web_view); webView.loadUrl("http://www.baidu.com"); webView.setWebViewClient(new MyWebViewClient()); webView.setWebChromeClient(new WebChromeClient()); } 二、MyWebViewClient 繼承WebViewClient,並重寫public boolean shouldOverrideUrlLoading(WebView view, String url)方法。簡單的說就是,經過HttpClient 來請求URL,獲取到相應的response,從response中就能夠獲得全部你想要的數據了;固然,要經過WebView.loadData()方法將response的entity加載到WebView中,這樣控件才能顯示web頁面:java
<!-- lang: java --> private class MyWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { Log.d("info", "===>>> shouldOverrideUrlLoading method is called!"); // TODO Auto-generated method stub URL local_url; URLConnection connection; try { local_url = new URL(url); connection = local_url.openConnection(); connection.setConnectTimeout(15000); connection.connect(); } catch (Exception e) {} final HttpGet httpGet = new HttpGet(url); Thread theard = new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub try { HttpResponse response; String htmlContent; HttpClient httpClient = new DefaultHttpClient(); response = httpClient.execute(httpGet); if (response.getStatusLine().getStatusCode() == 200) { Header[] headers = response.getAllHeaders(); for (Header header : headers) { String name = header.getName(); String value = header.getValue(); Log.d("info", "===>>> name:" + name); Log.d("info", "===>>> value:" + value); } HttpEntity entity = response.getEntity(); if (entity != null) { InputStream inputStream = entity.getContent(); htmlContent = convertToString(inputStream); Log.d("info", "===>>> htmlContent:" + htmlContent); webView.loadData(htmlContent, "text/html", "utf-8"); } } } catch (Exception e) { }; } }); theard.start();
// view.loadData(htmlContent, "text/html", "utf-8"); return true; // return super.shouldOverrideUrlLoading(view, url); }web
public String convertToString(InputStream inputStream) { StringBuffer string = new StringBuffer(); BufferedReader reader = new BufferedReader(new InputStreamReader( inputStream)); String line; try { while ((line = reader.readLine()) != null) { string.append(line + "\n"); } } catch (IOException e) { } return string.toString(); } }
注:我不是Java開發者,也不是Android開發者,代碼寫的醜的地方將就着看;另,歡迎扔磚…… ^_^app