微嵌工业平板开发论坛

 找回密码
 立即注册
搜索
热搜: android wince6.0
查看: 282|回复: 0

android获取网页获取网页的演示例程

[复制链接]

24

主题

4

回帖

104

积分

注册会员

Rank: 2

积分
104
发表于 2021-10-28 17:36:59 | 显示全部楼层 |阅读模式
  1. //这个演示程序演示了如何用android java去访问网页,获取网页。
  2. //get demo。html demo,html get
  3. //
  4. package com.demo.ld.testhttpget;

  5. import android.support.v7.app.AppCompatActivity;
  6. import android.os.Bundle;
  7. import android.util.Log;
  8. import android.view.View;
  9. import java.io.InputStream;
  10. import java.net.HttpURLConnection;
  11. import java.net.URL;
  12. import android.app.AlertDialog;
  13. import java.io.ByteArrayOutputStream;
  14. import android.widget.Toast;
  15. import android.os.Handler;
  16. import android.os.Message;


  17. public class ActivityHttpDemo extends AppCompatActivity {

  18.     private final static String HTML_URL = "https://blog.csdn.net/mynameislinduan";//测试的网址,我的网站。我的csdn博客
  19.     public String detailStr = "";//全局字符串,参数存储网页字符串

  20.     //系统生成。
  21.     @Override
  22.     protected void onCreate(Bundle savedInstanceState) {
  23.         super.onCreate(savedInstanceState);
  24.         setContentView(R.layout.activity_http_demo);
  25.     }

  26.     //案件触发,开始获取网页数据。
  27.     public void onBtnClickHttpGet(View view){
  28.         new MyThreadDownload(HTML_URL).start();//调用线程,获取网页数据,不允许获取html在主线程中运行
  29.     }

  30.     //一定要用线程获取网页数据,android studio不允许在主线程获取数据!
  31.     class MyThreadDownload extends Thread{
  32.         String urlStr = "";
  33.         public MyThreadDownload(String urlStr){
  34.             this.urlStr = urlStr;
  35.         }
  36.         //线程运行的实现函数,重载run函数,
  37.         public void run() {
  38.             try {
  39.                 detailStr = getHtml(this.urlStr);//获取网页数据,存在detailStr字符串中。
  40.                 Log.d("LDbg", "got string: " + detailStr);//这里是获取成功,打印得到的数据,
  41.             } catch (Exception e) {
  42.                 showExitDialog01();//获取失败,弹出警告框
  43.                 Log.e("LDbg", "Error! cannot get string.");
  44.                 e.printStackTrace();
  45.             }
  46.         }
  47.     }

  48.     //java输入转换工具,java getjava获取网络代码,android get例子。anrpod访问网络例子
  49.     public class StreamTools {
  50.         /**
  51.          * 将输入流转换成字符串
  52.          *
  53.          * @param is
  54.          *            从网络获取的输入流
  55.          * @return
  56.          */
  57.         public String streamToString(InputStream is) {
  58.             try {
  59.                 ByteArrayOutputStream baos = new ByteArrayOutputStream();
  60.                 byte[] buffer = new byte[1024];
  61.                 int len = 0;
  62.                 while ((len = is.read(buffer)) != -1) {
  63.                     baos.write(buffer, 0, len);
  64.                 }
  65.                 baos.close();
  66.                 is.close();
  67.                 byte[] byteArray = baos.toByteArray();
  68.                 return new String(byteArray);
  69.             } catch (Exception e) {
  70.                 Log.e("tag", e.toString());
  71.                 return null;
  72.             }
  73.         }
  74.     }


  75.     // 获取网页的html源代码,android获取html代码,java get html,java post,android好获取html
  76.     public String getHtml(String path) throws Exception {
  77.         URL url = new java.net.URL(path);//设置网址
  78.         HttpURLConnection conn = (HttpURLConnection) url.openConnection();
  79.         conn.setConnectTimeout(5000);//设置网页链接超时
  80.         conn.setReadTimeout(10000);//设置网页读取超时
  81.         conn.setRequestMethod("GET");//设置获取方式,大写的
  82.         Log.d("LDbg","responseCode:"+conn.getResponseCode());
  83.         if (conn.getResponseCode() == 200) {//200表示返回码正常,正常获取到网页数据。
  84.             InputStream in = conn.getInputStream();// 字节流转换成字符串
  85.             StreamTools strTool = new StreamTools();
  86.             String html = strTool.streamToString(in);
  87.             Log.d("LDbg","Got org html:" + html);
  88.             return html;//返回获取的html数据,返回获取的字符串数据。
  89.         }
  90.         return null;
  91.     }

  92.     //错误警告对话框,android弹出警告框
  93.     private void showExitDialog01(){
  94.         new AlertDialog.Builder(this)
  95.                 .setTitle("标题")
  96.                 .setMessage("没有得到网络数据!")
  97.                 .setPositiveButton("确定", null)
  98.                 .show();
  99.     }

  100. }
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|微嵌工业平板开发论坛

GMT+8, 2024-5-19 03:52 , Processed in 0.022210 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表