• 【Android Demo】获取指定网页的页面源代码


    1.直接上效果图

    2.代码

    主要就是工具类HtmlService.java:

    import java.io.ByteArrayOutputStream;
    import java.io.InputStream;
    import java.net.HttpURLConnection;
    import java.net.URL;
    
    /**
     * 获取HTML数据
     * 
     * @author David
     * 
     */
    public class HtmlService {
    
        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的请求类别,有POST、GET 两类
            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;
        }
    
        /**
         * 读取输入流,得到html的二进制数据
         * 
         * @param inStream
         * @return
         * @throws Exception
         */
        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();
        }
    
    }

    MainActivity.java 修改如下:

    public class MainActivity extends Activity {
    
        private String path = "http://www.cnblogs.com/yc-755909659/";
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            
            TextView textView = (TextView)this.findViewById(R.id.textView);  
            try {  
                String htmlContent = HtmlService.getHtml(path);
                textView.setText(htmlContent);  
            } catch (Exception e) {     
                textView.setText("程序出现异常:"+e.toString());
            }  
        }
    }

    activity_main.xml 很简单,还是放上来吧

    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
    
        <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    
    </ScrollView>

    最后,记得添加网络访问权限哦

    <uses-permission android:name="android.permission.INTERNET"/>
  • 相关阅读:
    转载.net泛型理解说明
    转载Repository 和Unit of work的使用说明
    libtool的工作原理
    带有通配符的字符串匹配算法-C/C++
    linux core文件机制
    grep多条件和sed合并两行
    BZOJ 3232 圈地游戏 (分数规划 + SPFA找负/正环)
    CSP2019 D1T3 树上的数 (贪心+并查集)
    CSP-S 2019 第二轮 退役记
    object-c中的int NSInteger NSUInteger NSNumber辨析
  • 原文地址:https://www.cnblogs.com/yc-755909659/p/4193947.html
Copyright © 2020-2023  润新知