【Android进阶】使用HttpURLConnection实现网页源码的下载

上一篇文章主要介绍的图片文件的下载与显示,这一篇文章主要介绍如何根据网页的地址,获取网页源代码的获取

其实,网站源代码的获取比图片的下载与显示更加简单,只需要对之前的代码稍作修改即可

public class OtherActivity extends Activity {

	private TextView tv;
	private static final int LOAD_SUCCESS = 1;
	private static final int LOAD_ERROR = -1;
	private Handler handler = new Handler() {
		public void handleMessage(Message msg) {

			switch (msg.what) {
			case LOAD_SUCCESS:
				tv.setText((String) msg.obj);
				break;
			case LOAD_ERROR:
				Toast.makeText(getApplicationContext(), "加载失败", 0).show();
				break;
			}

		};
	};

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		tv = (TextView) findViewById(R.id.tv);
	}

	// Button的点击事件
	public void show(View view) {
		new Thread(new Runnable() {
			public void run() {
				getHttp();
			}
		}).start();

	}

	// 下载图片的主方法
	private void getHttp() {
		URL url = null;
		InputStream is = null;
		ByteArrayOutputStream byteArrayOutputStream = null;
		try {
			// 构建图片的url地址
			url = new URL("http://www.baidu.com");
			// 开启连接
			HttpURLConnection conn = (HttpURLConnection) url.openConnection();
			// 设置超时的时间,5000毫秒即5秒
			conn.setConnectTimeout(5000);
			// 设置获取图片的方式为GET
			conn.setRequestMethod("GET");
			if (conn.getResponseCode() == 200) {
				is = conn.getInputStream();
				byteArrayOutputStream = new ByteArrayOutputStream();
				int len = 0;
				byte[] buffer = new byte[1024];
				while ((len = is.read(buffer)) != -1) {
					byteArrayOutputStream.write(buffer, 0, len);
				}
				byteArrayOutputStream.flush();
				byte[] arr = byteArrayOutputStream.toByteArray();
				Message msg = handler.obtainMessage();
				msg.what = LOAD_SUCCESS;
				msg.obj = new String(arr);
				handler.sendMessage(msg);
			}
		} catch (Exception e) {
			handler.sendEmptyMessage(LOAD_ERROR);
			e.printStackTrace();
		} finally {

			try {
				if (is != null) {
					is.close();
				}
				if (byteArrayOutputStream != null) {
					byteArrayOutputStream.close();
				}
			} catch (Exception e) {
				handler.sendEmptyMessage(LOAD_ERROR);
				e.printStackTrace();
			}
		}
	}

}

布局文件

<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" >

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:onClick="show"
        android:text="显示" />

    <TextView
        android:id="@+id/tv"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

权限

<uses-permission android:name="android.permission.INTERNET" />

【Android进阶】使用HttpURLConnection实现网页源码的下载

时间: 2024-12-18 06:04:35

【Android进阶】使用HttpURLConnection实现网页源码的下载的相关文章

Android进阶:五、RxJava2源码解析 2

上一篇文章Android进阶:四.RxJava2 源码解析 1里我们讲到Rxjava2 从创建一个事件到事件被观察的过程原理,这篇文章我们讲Rxjava2中链式调用的原理.本文不讲用法,仍然需要读者熟悉Rxjava基本的用法. 一.Rxjava2 的基本用法 Rxjava是解决异步问题的,它的链式调用让代码看起来非常流畅优.现在我们带上线程切换以及链式调用来看看.下面代码是示例: Observable .create(new ObservableOnSubscribe<String>() {

黎活明8天快速掌握android视频教程--24_网络通信之网页源码查看器

1 该项目的主要功能就是从将后台的html网页在Android的界面上显示出来 后台就是建立一个java web工程在工程尚建立一个html或者jsp文件就可以了,这里主要看Android客户端的程序 xml文件: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" andr

Android进阶:四、RxJava2 源码解析 1

本文适合使用过Rxjava2或者了解Rxjava2的基本用法的同学阅读 一.Rxjava是什么Rxjava在GitHub 主页上的自我介绍是 "a library for composing asynchronous and event-based programs using observable sequences for the Java VM"(一个在 Java VM 上使用可观测的序列来组成异步的.基于事件的程序的库). 通俗来说,Rxjava是一个采用了观察者模式设计处理异

Android进阶:二、从源码角度看透 HandlerThread 和 IntentService

上篇文章我们讲日志的存储策略的时候用到了HandlerThread,它适合处理"多而小的任务"的耗时任务的时候,避免产生太多线程影响性能,那这个HandlerThread的原理到底是怎样的呢?我们现在从源码角度解读 HandlerThread:继承自Thread,是一个可以使用Handler的Thread.因为在run方法内维护了一个Looper,可以通过Handler发送消息的方式,来通知HandlerThread执行一个具体的任务. public void run() { mTid

Android 【山西违章查询实现1】(解析网页源码然后ListView显示出来)---利用正则表达式解析网页源码

这几天学习Android网络方面的,本来想从网上找些违章查询的接口,看了一下基本上都是付费的,索性自己写一个. 主要是 到正则表达式(我都不好意思说我用的正则表达式了)解析了一个网页,然后从ListView显示出来,还有轻量级的SQlite(储存违章查询). 想写一个详细点的所以慢慢来,以后自己回来看的时候估计也会觉得自己写的很乱吧. ---------------------------------- 1.首页查看自己要解析的网页和网址的构成 还需要验证码,最后发现验证码就是骗人的(有点坑啊)

Android 【山西违章查询实现2】(解析网页源码然后ListView显示出来)--- 客户端获取html源码

废话不多说,直接上源码 最后网页源码在result中. public void btn(View view) { new myWorker().execute("这里是网址"); } //异步操作,防止UI线程阻塞. private class myWorker extends AsyncTask<String,Void,String> { protected String doInBackground(String...urls) { StringBuilder buil

Android网络编程(十一)源码解析Retrofit

相关文章 Android网络编程(一)HTTP协议原理 Android网络编程(二)HttpClient与HttpURLConnection Android网络编程(三)Volley用法全解析 Android网络编程(四)从源码解析volley Android网络编程(五)OkHttp2.x用法全解析 Android网络编程(六)OkHttp3用法全解析 Android网络编程(七)源码解析OkHttp前篇[请求网络] Android网络编程(八)源码解析OkHttp后篇[复用连接池] Andr

网页源码查看器

网页源码查看器 代码实现步骤 [1]搭建UI [2]httpurlconnection类基本用法 @OnClick(R.id.btn) public void onViewClicked() { final String url = mEt.getText().toString().trim(); if (TextUtils.isEmpty(url)) { Toast.makeText(this, "网址不能为空" + url, Toast.LENGTH_SHORT).show();

java中用jsoup抓取网页源码,并批量下载图片

一.导入jsoup的核心jar包jsoup-xxx.jar jar包下载地址:jsoup-1.8.2.jar 中文API地址:http://www.open-open.com/jsoup/parsing-a-document.htm 二.java中用jsoup抓取网页源码,并批量下载图片 package com.dgh.test; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; i