在android客户端加载html源代码总结

2024-05-07 03:48

本文主要是介绍在android客户端加载html源代码总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

随时随地技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)

在实际应用中,客户端要从网页上获取数据是常见的事,如果要解析网页上的html文档,那么首先得获取html源码,然后现在一般使用Jsoup来转换成Document文档来进行解析,本文主要讨论如何使用Jsoup把html文档解析成Document文档,方法归纳了6种,jar使用的是jsoup-1.6.1.jar,代码如下:

MainActivity:

package com.home.gethtml;import java.io.BufferedInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;import org.apache.http.util.ByteArrayBuffer;
import org.apache.http.util.EncodingUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;public class MainActivity extends Activity implements OnClickListener {private Button btn;private EditText showText;private Handler handler;private Document doc;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);btn = (Button) findViewById(R.id.main_btn);btn.setOnClickListener(this);showText = (EditText) findViewById(R.id.main_et);handler = new Handler() {@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);showText.setText(doc + "");}};}@Overridepublic void onClick(View v) {if (v == btn) {new Thread() {public void run() {// 1.直接从字符串中输入HTML文档// String html =// "<html><head><title> 测试html的加载 </title></head>"// + "<body><p> 这是一篇使用jsoup来加载html的文章 </p></body></html>";// doc = Jsoup.parse(html);// handler.sendEmptyMessage(0);// 2.1 从 URL直接加载 HTML文档// try {// doc =// Jsoup.connect("http://blog.csdn.net/u010142437").get();// handler.sendEmptyMessage(0);// } catch (IOException e) {// e.printStackTrace();// }// 2.2 从 URL直接加载 HTML文档// try {// doc = Jsoup.connect("http://blog.csdn.net/u010142437")// .data("query", "Java") // 请求参数// .userAgent("I’m jsoup") // 设置 User-Agent// .cookie("auth", "token") // 设置 cookie// .timeout(5000) // 设置连接超时时间// .post(); // 使用 POST方法访问 URL// handler.sendEmptyMessage(0);// } catch (IOException e) {// e.printStackTrace();// }// 2.3从 URL直接加载 HTML文档// try {// doc = Jsoup.parse(new URL(// "http://blog.csdn.net/u010142437"), 5000);// handler.sendEmptyMessage(0);// } catch (MalformedURLException e) {// e.printStackTrace();// } catch (IOException e) {// e.printStackTrace();// }// 2.4从 URL直接加载 HTML文档:先使用流读取html,然后使用Jsoup转换成Document文档// String html =// getHtmlString("http://blog.csdn.net/u010142437");// // 再使用第一种方式// doc = Jsoup.parse(html);// handler.sendEmptyMessage(0);// 3.从sd卡文件中加载 HTML文档File file = new File("/mnt/sdcard/test.html");try {// 第三个参数是baseURL,当 HTML文档使用相对路径方式引用外部文件时,jsoup会自动为这些// URL加上baseURL这个前缀 。doc = Jsoup.parse(file, "UTF-8","http://blog.csdn.net/");handler.sendEmptyMessage(0);} catch (IOException e) {e.printStackTrace();}}}.start();}}/*** 使用URLConnection根据url读取html源代码* * @param urlString* @return*/private String getHtmlString(String urlString) {try {URL url = new URL(urlString);URLConnection ucon = url.openConnection();InputStream instr = ucon.getInputStream();BufferedInputStream bis = new BufferedInputStream(instr);ByteArrayBuffer bau = new ByteArrayBuffer(500);int current = 0;while ((current = bis.read()) != -1) {bau.append((byte) current);}return EncodingUtils.getString(bau.toByteArray(), "utf_8");} catch (Exception e) {return "";}}
}

布局xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><Buttonandroid:id="@+id/main_btn"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="加载" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="html源码:" /><EditTextandroid:id="@+id/main_et"android:layout_width="match_parent"android:layout_height="match_parent"android:editable="false" /></LinearLayout>


记得加上访问网络和读取sd卡文件的权限哦~。

这篇关于在android客户端加载html源代码总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/966242

相关文章

具有加载时编织的非公共方法的Spring事务

具有加载时编织的非公共方法的Spring事务 在本教程中,我们将学习在任何spring应用程序中对非公共方法应用事务(通过deault spring AOP只能建议在IoC容器中声明的bean的公共方法)。使用此技术,您可以管理非公共方法的事务,或者将任何方法管理到在Spring IoC容器外部创建的对象(即不由IoC容器管理)。 使用AnnotationTransactionAspect管理

Spring Boot - 使用类类型信息获取所有已加载的bean

Spring启动会在内部加载大量bean,以最少的配置运行您的应用程序。在这个例子中,我们将学习如何找出所有那些Spring boot加载的bean及其类类型信息。 使用ApplicationContext获取所有已加载的bean 要自动执行方法,当应用程序完全加载时,我正在使用CommandLineRunner接口。CommandLineRunner用于指示bean 在Spring应用程序中

关于HTML的多媒体标签

代码示例如下: <!doctype html><html lang="en"><head><meta charset="UTF-8"><meta name="Generator" content="EditPlus?"><meta name="Author" content=""><meta name="Keywords" content=""><meta name="Descriptio

关于HTML的框架标签及内嵌框架

框架标签的代码示例如下: <!doctype html><html lang="en"><head><meta charset="UTF-8"><meta name="Generator" content="EditPlus?"><meta name="Author" content=""><meta name="Keywords" content=""><meta name="Desc

关于HTML的表格标签

代码示例如下: <!doctype html><html lang="en"><head><meta charset="UTF-8"><meta name="Generator" content="EditPlus?"><meta name="Author" content=""><meta name="Keywords" content=""><meta name="Descriptio

关于HTML的清单标签

代码示例如下: <!doctype html><html lang="en"><head><meta charset="UTF-8"><meta name="Generator" content="EditPlus?"><meta name="Author" content=""><meta name="Keywords" content=""><meta name="Descriptio

关于HTML的图片标签

代码示例如下: <!doctype html><html lang="en"><head><meta charset="UTF-8"><meta name="Generator" content="EditPlus?"><meta name="Author" content=""><meta name="Keywords" content=""><meta name="Descriptio

关于HTML的字体标签

代码示例如下: <!doctype html><html lang="en"><head><meta charset="UTF-8"><meta name="Generator" content="EditPlus?"><meta name="Author" content=""><meta name="Keywords" content=""><meta name="Descripti

关于HTML的排版标签

代码示例如下: <!doctype html><html lang="en"><head><meta charset="UTF-8"><meta name="Generator" content="EditPlus?"><meta name="Author" content=""><meta name="Keywords" content=""><meta name="Descriptio