【Android】Android取网页源码,解决各种坑,高级编程思想,附效果图。环境:Android studio-光软科技

大家好,5.1了,给大家写一篇博文,关于android平台的一些操作,还有一些坑的解决,今天主要给大家写一篇取网页源码的android博文。

环境:android studio,小米8.
本来我是想写一个菜谱app,然后中间我要取网页的源代码。

效果图:

我取的网页编码是gb2312格式,取其他的格式更换方法编码就行。
android

取源代码首先给xml里面加网络访问权限。

<uses-permission android:name="android.permission.INTERNET"/>

其次我是建立了个操作类,直接新建的。附图

android
调用方法:
在这里插入图片描述

注意点:

1.因为接口写了throws Exception 所以必须用try catch捕获

2.因为安卓4.4之后不允许在主线程直接访问网络,所以必须开一个线程,否则抛出异常

主界面布局(我们只用了其中两个控件)

android view

接下来给按钮点击绑定事件aass

操作类的代码:

import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class cz {
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();
    }
    public static String 取网页源码(String 地址,String 网页编码) throws Exception {
        // 通过网络地址创建URL对象
        URL url = new URL(地址);
        // 根据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, 网页编码);
        return html;
    }
}

方法的代码:

public void aass(View s){
        new Thread(new Runnable(){
            @Override
            public void run() {
               // AlertDialog.Builder ab=new AlertDialog.Builder(getApplicationContext());  //(普通消息框)
                try{
                    TextView aa =(TextView)findViewById(R.id.html);
                    String sb=cz.取网页源码("http://tools.2345.com/frame/menu/search?keyword=%B3%B4%C8%E2","gb2312");
                    aa.setText(sb);
                }
                catch (Exception e){
                    TextView aa =(TextView)findViewById(R.id.search);
                    aa.setText(e.toString());
                }
            }
        }).start();
    }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值