zoukankan      html  css  js  c++  java
  • Android使用获取HTML

    
    
     1 public byte[] readStream(InputStream inputStream) throws Exception 
     2     {
     3         byte[] buffer = new byte[1024];
     4         int len = -1;
     5         ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
     6 
     7         while ((len = inputStream.read(buffer)) != -1) 
     8         {
     9             byteArrayOutputStream.write(buffer, 0, len);
    10         }
    11 
    12         inputStream.close();
    13         byteArrayOutputStream.close();
    14         return byteArrayOutputStream.toByteArray();
    15     }
    16 
    17     public String testGetHtml(String urlpath) throws Exception 
    18     {
    19         URL url = new URL(urlpath);
    20         HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    21         conn.setConnectTimeout(1000);//超时时间1秒钟
    22         conn.setRequestMethod("GET");
    23 
    24         if (conn.getResponseCode() == 200) 
    25         {
    26             InputStream inputStream = conn.getInputStream();
    27             byte[] data = readStream(inputStream);
    28             String html = new String(data);
    29             return html;
    30         }
    31         return "bb";
    32     }

    如果在android4.0以下的版本中,可以直接使用。否则,这部分网络编程就需要使用到多线程,如果不使用多线程就会抛出android.os.NetworkOnMainThreadException异常。下面是多线程的代码

     1 private static final int MSG_SUCCESS = 0;// 获取成功的标识
     2 private static final int MSG_FAILURE = 1;// 获取失败的标识
     3 
     4 protected void onCreate(Bundle savedInstanceState) {
     5         super.onCreate(savedInstanceState);
     6         setContentView(R.layout.activity_main);
     7         tx = (TextView) findViewById(R.id.tx);
     8         html = (Button) findViewById(R.id.Button1);
     9         html.setOnClickListener(new View.OnClickListener(){
    10             @Override
    11             public void onClick(View v) {
    12                 new Thread(){
    13                     public void run(){
    14                         try {
    15                             String testStr="aa";
    16                             testStr = testGetHtml("http://www.baidu.com/");
    17                             mHandler.obtainMessage(MSG_SUCCESS, testStr).sendToTarget();
    18                         } catch (Exception e) {
    19                             e.printStackTrace();
    20                             StringWriter sw = new StringWriter();  
    21                             e.printStackTrace(new PrintWriter(sw, true));  
    22                             String str = sw.toString();  
    23                             mHandler.obtainMessage(MSG_FAILURE, str).sendToTarget();
    24                         }
    25                     }
    26                 }.start();
    27             }
    28         });
    29         
    30         
    31         //HttpGetData();
    32     }
    33     private Handler mHandler = new Handler(){
    34         public void handleMessage(Message msg)
    35         {
    36             switch(msg.what)
    37             {
    38                 case MSG_SUCCESS:
    39                     tx.setText(msg.obj.toString());break;
    40                 case MSG_FAILURE:
    41                     tx.setText(msg.obj.toString());break;
    42             }
    43         }
    44     };
  • 相关阅读:
    网站首页的设计
    短网址服务的构建
    分布式服务框架:Zookeeper
    Hadoop数据传输工具:Sqoop
    规则引擎简介
    HadoopDoctor:来自腾讯数据仓库TDW的MR诊断系统
    Hermes:来自腾讯的实时检索分析平台
    Mdrill:来自阿里的多维快速查询工具
    Saiku操作界面的简化
    Saiku OLAP
  • 原文地址:https://www.cnblogs.com/ProgrammerHu/p/3696640.html
Copyright © 2011-2022 走看看