html查看器android

简介:

本文转自lzwxx 51CTO博客,原文链接:

http://blog.51cto.com/13064681/1943486


1.android的API提供了访问网络的一个类HttpURLConnection

2.通过发送GET请求获取服务器返回的html代码

3.先看看布局文件,如下所示,

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <EditText        android:id="@+id/et"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <Button        android:onClick="get"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="获取源码"/>
    <ScrollView        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <TextView            android:id="@+id/tv"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
           android:textColor="#00f"
            android:hint="源码显示"/>
    </ScrollView></LinearLayout>

布局样子:

4.下来是清单文件,记得连接网络要添加权限

5.1再看java代码,MainActivity的

package com.market.source;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.EditText;import android.widget.TextView;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.ProtocolException;import java.net.URL;import java.net.URLConnection;import butterknife.BindView;import butterknife.ButterKnife;public class MainActivity extends Activity {

    @BindView(R.id.et)
     EditText et;

    @BindView(R.id.tv)
     TextView tv;


    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
    }    public void get(View vew) throws IOException {        final String str = et.getText().toString().trim();        new Thread(){

            @Override            public void run() {                //1.请求地址url
                URL url = null;                try {
                    url = new URL(str);                    //2.获取对这个地址的连接
                    HttpURLConnection con = (HttpURLConnection) url.openConnection();                    //3.设置对这个地址的请求,GET请求
                    con.setRequestMethod("GET");                    //4.设置请求参数
                    con.setConnectTimeout(5000);                    //5.获取服务器的响应
                    int code = con.getResponseCode();                    //6.根据响应吗,判断请求成功还是失败,200成功
                    if(code==200){                        //7.成功的话,服务器一流的形式返回数据
                        InputStream inputStream = con.getInputStream();                        //8.这个流是字节流,需要我们转换为字符流才可以认识
                        final String info = StreamTool.StreamtoString(inputStream);
                        Log.e("MainActivity",info);
                        runOnUiThread(new Runnable() {
                            @Override                            public void run() {
                                tv.setText(info);
                            }
                        });

                    }
                } catch (MalformedURLException e) {
                    e.printStackTrace();
                } catch (ProtocolException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }


            }




        }.start();
    }


}

5.2工具类,用来将一个流转化为字符串

public class StreamTool {    public static String StreamtoString(InputStream inputStream) {        int len = -1;        byte[] buffer = new byte[1024];        //内存数组输出流
        ByteArrayOutputStream baos = new ByteArrayOutputStream();        try {            while((len=inputStream.read(buffer)) != -1){

               baos.write(buffer,0,len);
            }
            String str = new String(baos.toByteArray());            return str;

        } catch (IOException e) {
            e.printStackTrace();
        }finally {            try {
                inputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }        return null;
    }

}

 

6.运行效果查看

 

 


相关文章
|
前端开发 JavaScript Java
没错,你可以移动式编码了:4款最好的Android设备HTML编辑器
作为出色的应用平台,Android系统不仅可以用于登录Facebook或是玩“愤怒的小鸟”,它还可以为web开发人员提供可行的移动式解决方案。然而,web开发者是不可能对那些陈旧的文本编辑器表示满意的——他们需要使用专门的代码编辑器,以便让工作更快速更便捷地完成。下面我将要介绍4款名列前茅用于Android设备的HTML编辑器,任何web开发人员都能利用它们在平板电脑上处理大量工作,或是在智能手机上进行一些快速修改。
2628 0
没错,你可以移动式编码了:4款最好的Android设备HTML编辑器
|
2月前
|
移动开发 JavaScript Java
关于Android中如何过滤HTML标签
关于Android中如何过滤HTML标签
46 0
|
4月前
|
Android开发
android TextView HTML 的效果
android TextView HTML 的效果
33 2
|
4月前
|
移动开发 JavaScript Android开发
|
JavaScript Android开发 iOS开发
html通过js调用ios或android代码
html通过js调用ios或android代码
143 0
|
移动开发 Java Android开发
WebView加载不出Html5网页的解决方法,android studio 拾色器,ViewPager高度问题
WebView加载不出Html5网页的解决方法,android studio 拾色器,ViewPager高度问题
343 0
WebView加载不出Html5网页的解决方法,android studio 拾色器,ViewPager高度问题
|
JavaScript Android开发 iOS开发
html通过js调用ios或android代码
html通过js调用ios或android代码
97 0
|
JavaScript Android开发 iOS开发
html通过js调用ios或android代码
html通过js调用ios或android代码
58 0
|
Web App开发 Java Maven
Android 基于Web Html实现webrtc 直播 调取Native操作
Android 基于Web Html实现webrtc 直播 调取Native操作
360 0
|
JavaScript Android开发 iOS开发
html通过js调用ios或android代码
html通过js调用ios或android代码
110 0