android webview获取网页源代码,js执行前后

来源:互联网 发布:天诚网络 编辑:程序博客网 时间:2024/04/28 07:04

webview获取网页源代码分两种,一种是js执行前,一种是js执行后

1.js执行前

调用getHtml即可
public static String getHtml(String path) throws Exception {    // 通过网络地址创建URL对象    URL url = new URL(path);    // 根据URL    // 打开连接,URL.openConnection函数会根据URL的类型,返回不同的URLConnection子类的对象,这里URL是一个http,因此实际返回的是HttpURLConnection    HttpURLConnection conn = (HttpURLConnection) url.openConnection();    // 设定URL的请求类别,有POSTGET 两类    conn.setRequestMethod("GET");    //设置从主机读取数据超时(单位:毫秒)    conn.setConnectTimeout(5000);    //设置连接主机超时(单位:毫秒)    conn.setReadTimeout(5000);    // 通过打开的连接读取的输入流,获取html数据    InputStream inStream = conn.getInputStream();    // 得到html的二进制数据    byte[] data = readInputStream(inStream);    // 是用指定的字符集解码指定的字节数组构造一个新的字符串    String html = new String(data, "utf-8");    return html;}public static byte[] readInputStream(InputStream inStream) throws Exception {    ByteArrayOutputStream outStream = new ByteArrayOutputStream();    byte[] buffer = new byte[1024];    int len = 0;    while ((len = inStream.read(buffer)) != -1) {        outStream.write(buffer, 0, len);    }    inStream.close();    return outStream.toByteArray();}

2.js执行后

启用js
settings.setJavaScriptEnabled(true); 
定义接口
private final class InJavaScriptLocalObj {    public void showSource(String html2) {        html = html2;    }}
webview添加自定义接口
webView.addJavascriptInterface(new InJavaScriptLocalObj(), "local_obj");
添加webviewClient回调,执行指定js
private WebViewClient webViewClient = new WebViewClient() {    @Override    public void onPageFinished(WebView view, String url) {        super.onPageFinished(view, url);               view.loadUrl("javascript:window.local_obj.showSource('<head>'+" +                "document.getElementsByTagName('html')[0].innerHTML+'</head>');");            }
在需要获取网页源代码的地方后去html变量即可

原创粉丝点击