[android] 网络html查看器

[android] 网络html查看器,第1张

概述访问一个网页的请求实际上就是一个GET请求,应用的布局没啥好说的,线性布局,定义好控件,在activity代码里面先获取到控件,获取到EditText控件的网络路径,开启get请求 开启一个新的线程,

访问一个网页的请求实际上就是一个GET请求,应用的布局没啥好说的,线性布局,定义好控件,在activity代码里面先获取到控件,获取到EditText控件的网络路径,开启get请求

 

开启一个新的线程,new Thread(){}.start()

获取Url对象,new出来,参数:pathStringurl,内部类访问外部类的变量,应该顶一次final

主线程中定义成员属性Handler对象,为了方便直接重写handleMessage()方法,回调过来的参数是Message对象,获取Message对象的what属性和obj属性,

NewUrl之后,会有异常产生,捕获异常,

调用Url对象的openConnection()方法,得到httpUrlConnection对象,这里需要强转

调用httpUrlConnection对象的setRequestMethod()方法

调用httpUrlConnection对象的setConnectTimeout()方法

调用httpUrlConnection对象的setRequestproperty()方法

调用httpUrlConnection对象的getResponseCode()方法,得到响应码,进行判断

调用httpUrlConnection对象的getinputStream()方法,得到inputStream对象

 

把流的数据转换成文本,是一个非常常用的 *** 作,新建一个包utils,放工具类

新建一个类StreamTools,里面定义一个静态方法readinputStream()

获取ByteArrayOutputStream对象,通过new一个字节数组输出流

定义一个intlen长度是0

定义一个byte[]的数组,通过new byte[1024]定义一个1024字节的数组

定义一个while循环,条件是调用inputStream对象的read(buffer)方法,参数:上面定义的byte[]数组,把数据读入到byte[]数组里面,返回一个读取的长度,如果长度等于-1那就是读到末尾了,因此这个进行循环判断

调用ByteArrayOutputStream对象的write(buffer,len)方法,读取字节数组,从0开始到len长度

循环完成之后,关闭输入流,调用ByteArrayOutputStream对象的toByteArray()得到一个字节数组,return出来用new String()包装一下

 

调用Handler对象的sendMessage()方法发送数据

 

当设置请求参数的时候,不能多加冒号,否则容易出错

package com.tsh.hrmlvIEwer;import java.io.inputStream; java.net.httpURLConnection; java.net.MalformedURLException; java.net.URL; com.tsh.hrmlvIEwer.utils.StreamTools; androID.app.Activity; androID.os.Bundle; androID.os.Handler; androID.os.Message; androID.text.TextUtils; androID.vIEw.VIEw; androID.Widget.EditText; androID.Widget.TextVIEw; androID.Widget.Toast;public class MainActivity extends Activity {    protected static final int SUCCESS = 1;    int ERROR = 2private EditText et_path;     TextVIEw tv_show;    // 消息处理器    public Handler handler = new Handler() {        voID handleMessage(Message msg) {            switch (msg.what) {            case SUCCESS:                String text = (String) msg.obj;                tv_show.setText(text);                break;             ERROR:                Toast.makeText(MainActivity.this,"获取数据失败",0).show();                ;            }        };    };    @OverrIDe     onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.activity_main);        et_path = (EditText) findVIEwByID(R.ID.et_path);        tv_show = (TextVIEw) findVIEwByID(R.ID.tv_show);    }     查看     click(VIEw v) {        final String path = et_path.getText().toString().trim();        if (TextUtils.isEmpty(path)) {            Toast.makeText().show();        } else {             开启新线程             Thread() {                 run() {                    try {                        URL url =  URL(path);                        httpURLConnection conn = (httpURLConnection) url                                .openConnection();                        conn.setRequestMethod("GET");                        conn.setConnectTimeout(5000);                        int code = conn.getResponseCode();                        if (code == 200) {                            inputStream is = conn.getinputStream();                            String res = StreamTools.readinputStream(is);                            Message msg =  Message();                            msg.what = SUCCESS;                            msg.obj = res;                            handler.sendMessage(msg);                        }  {                            Message msg =  ERROR;                            handler.sendMessage(msg);                        }                    } catch (Exception e) {                        e.printstacktrace();                        Message msg =  Message();                        msg.what = ERROR;                        handler.sendMessage(msg);                    }                }            }.start();        }    }}

工具类:

 com.tsh.hrmlvIEwer.utils; java.io.ByteArrayOutputStream; java.io.inputStream;class StreamTools {    /**     * 读取输入流     * @param is     * @return     */    static String readinputStream(inputStream is){        ByteArrayOutputStream baos= ByteArrayOutputStream();        int len=0;        byte[] buffer=new byte[1024];        while((len=is.read(buffer))!=-1){                baos.write(buffer,0,len);            }            is.close();            byte[] res=baos.toByteArray();            return  String(res);        }  (Exception e) {            e.printstacktrace();        }        null;    }}

 

总结

以上是内存溢出为你收集整理的[android] 网络html查看器全部内容,希望文章能够帮你解决[android] 网络html查看器所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1121127.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存