• Android 网络HTML查看器


    本文实现一个基于Android的网络HTML查看器

    新建项目,项目布局文件如下:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context=".MainActivity" >
    
        <EditText
            android:id="@+id/et_path"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:hint="请输入html路径" />
    
        <Button
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:onClick="click"
            android:text="查看" />
    
        <ScrollView
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" >
    
            <TextView
                android:id="@+id/tv_content"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent" >
            </TextView>
        </ScrollView>
    
    </LinearLayout>

    新建工具类StreamTools.java:

    package com.wuyudong.htmlviewer.utils;
    
    import java.io.ByteArrayOutputStream;
    import java.io.InputStream;
    
    
    public class StreamTools {
        /**
         * 把输入流的内容转化成字符串
         * 
         * @param is
         * @return
         */
        public static String readInputStream(InputStream is) {
            try {
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                int len = 0;
                byte[] buffer = new byte[1024];
                while ((len = is.read(buffer)) != -1) {
                    baos.write(buffer, 0, len);
                }
                is.close();
                baos.close();
                byte[] result = baos.toByteArray();
                return new String(result);
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
    
        }
    
    }

    完整代码如下:

    package com.wuyudong.htmlviewer;
    
    import java.io.InputStream;
    import java.io.StreamCorruptedException;
    import java.net.HttpURLConnection;
    import java.net.URL;
    
    import com.wuyudong.htmlviewer.utils.StreamTools;
    
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.app.Activity;
    import android.text.TextUtils;
    import android.view.Menu;
    import android.view.View;
    import android.widget.EditText;
    import android.widget.TextView;
    import android.widget.Toast;
    
    public class MainActivity extends Activity {
    
        protected static final int ERROR = 1;
        protected static final int SHOW_TEXT = 2;
    
        private TextView tv_content;
        private EditText et_path;
    
        // 定义一个消息处理器
        private Handler handler = new Handler() {
            public void handleMessage(android.os.Message msg) {
                switch (msg.what) {
                case ERROR:
                    Toast.makeText(MainActivity.this, "获取数据失败", 0).show();
                    break;
                case SHOW_TEXT:
                    String text = (String) msg.obj;
                    tv_content.setText(text);
                    break;
                }
            };
        };
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            tv_content = (TextView) findViewById(R.id.tv_content);
            et_path = (EditText) findViewById(R.id.et_path);
    
        }
    
        public void click(View view) {
            final String path = et_path.getText().toString().trim();
            if (TextUtils.isEmpty(path)) {
                Toast.makeText(this, "路径不能为空", 0).show();
            } else {
                new Thread() {
                    public void run() {
                        try {
                            URL url = new URL(path);
                            HttpURLConnection conn = (HttpURLConnection) url
                                    .openConnection();
                            conn.setRequestMethod("GET");
                            conn.setConnectTimeout(5000);
                            conn.setReadTimeout(5000);
                            conn.setRequestProperty(
                                    "User-Agent",
                                    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36");
    
                            int code = conn.getResponseCode();
                            if (code == 200) {
                                InputStream is = conn.getInputStream();
                                String result = StreamTools.readInputStream(is);
                                // tv_content.setText(result);
                                Message msg = new Message();
                                msg.what = SHOW_TEXT;
                                msg.obj = result;
                                handler.sendMessage(msg);
                            } else {
                                Message msg = new Message();
                                msg.what = ERROR;
                                handler.sendMessage(msg);
                            }
                        } catch (Exception e) {
                            e.printStackTrace();
                            Message msg = new Message();
                            msg.what = ERROR;
                            handler.sendMessage(msg);
    
                        }
    
                    };
                }.start();
    
            }
    
        }
    
    }
  • 相关阅读:
    ASP.NET——基础 14、Server
    ASP.NET——基础 15、HttpHandler
    ASP.NET——基础 2、ViewState
    MYSQL VS2010 中文乱码问题
    ASP.NET——基础 10、Web开发的一些基本原则1
    数据结构与算法 2、单向/双向链表
    C#操作XML日志
    web开发入门级学习经验(菜鸟级)
    笔记:键盘键值一览表(JS)
    笔记:JS事件的捕获与冒泡
  • 原文地址:https://www.cnblogs.com/wuyudong/p/5621528.html
Copyright © 2020-2023  润新知