很少说直接上代码: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