• android 74 下载文本


    页面:

    <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:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context=".MainActivity" 
        android:orientation="vertical"
        >
    
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="查看源文件" 
            android:onClick="click"
            />
        <ScrollView 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            >
        <TextView 
            android:id="@+id/tv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            />
    </ScrollView>
    </LinearLayout>

    JAVA:

    package com.itheima.htmlviewer;
    
    import java.io.InputStream;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;
    
    import com.itheima.htmlviewer.utils.Utils;
    
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.app.Activity;
    import android.view.Menu;
    import android.view.View;
    import android.widget.TextView;
    //请求网上的文本(网页)
    public class MainActivity extends Activity {
    
        Handler handler = new Handler(){
            public void handleMessage(android.os.Message msg) {
                TextView tv = (TextView) findViewById(R.id.tv);
                tv.setText((String)msg.obj);
            }
        };
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
        public void click(View v){
            Thread t = new Thread(){
                @Override
                public void run() {
                    String path = "http://192.168.13.13:8080/baidu.html";
                    try {
                        URL url = new URL(path);
                        //获取连接对象,此时还未建立连接
                        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                        conn.setRequestMethod("GET");
                        conn.setConnectTimeout(5000);
                        conn.setReadTimeout(5000);
                        //先建立连接,然后获取响应码
                        if(conn.getResponseCode() == 200){
                            //拿到服务器返回的输入流,流里的数据就是html的源文件
                            InputStream is = conn.getInputStream();
                            //从流里把文本数据取出来
                            String text = Utils.getTextFromStream(is);
                            
                            //发送消息,让主线程刷新ui,显示源文件
                            Message msg = handler.obtainMessage();
                            msg.obj = text;
                            handler.sendMessage(msg);
                        }
                    } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            };
            t.start();
            
        }
    
    }
    package com.itheima.htmlviewer.utils;
    
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    
    public class Utils {
    
        public static String getTextFromStream(InputStream is){
            //乱码是因为服务器和客户端码表不一致
            byte[] b = new byte[1024];
            int len = 0;
            //创建字节数组输出流,读取输入流的文本数据时,同步把数据写入数组输出流
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            try {
                while((len = is.read(b)) != -1){
                    bos.write(b, 0, len);//写入到数组输出流
                }
                //把字节数组输出流里的数据转换成字节数组
                String text = new String(bos.toByteArray(),"utf-8");//安卓默认是utf-8
                return text;
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return null;
        }
    }
  • 相关阅读:
    C# Cache的类方法
    a href="javascript:void(0)"
    细数银行7大手续费 这些冤枉钱别再交了
    mysql 中order by 与group by的顺序
    java springboot 将html页面转成图片
    SpringBoot读取Resource下文件的几种方式
    在CentOS 6.X中安装中文字体
    第三方api调用HttpClient
    java通过html生成pdf,支持css和图片以及横向打印
    nginx配置静态文件和服务代理
  • 原文地址:https://www.cnblogs.com/yaowen/p/4928859.html
Copyright © 2020-2023  润新知