博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解析html
阅读量:5057 次
发布时间:2019-06-12

本文共 2399 字,大约阅读时间需要 7 分钟。

//解析html

package com.xh.tx.html;

import java.io.ByteArrayOutputStream;

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import android.app.Activity;

import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

TextView tv_html_content = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv_html_content = (TextView) findViewById(R.id.tv_html_content);
loadHtml("http://10.0.2.2:8080/baidu/");
}
//加载html
public void loadHtml(String uri)
{
try {
final URL url = new URL(uri);
new Thread(new Runnable() {
@Override
public void run() {
HttpURLConnection conn = null;
try {
conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(30000);
conn.setReadTimeout(30000);
conn.setRequestMethod("GET");//以get的方式去请求数据,如果没有这句话,默认就是以get方式请求
conn.connect(); //连接
/**
* 网络连接是否一定成功? 》》 否定的
* 如何判断网络一定成功 >> 在http请求中有一个状态来标示网络是否成功
*/
if(conn.getResponseCode() == 200)
{
final String content = releaseInputStream(conn.getInputStream());
//非要打印一句话
runOnUiThread(new Runnable() {
@Override
public void run() {
if(null == content)
{
Toast.makeText(MainActivity.this, "加载网页源代码失败", 0).show();
}else
{
tv_html_content.setText(content);
}
}
});
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally
{
if(null != conn)
{
conn.disconnect();
}
}
}
}).start();
} catch (MalformedURLException e1) {
e1.printStackTrace();
}
}
public String releaseInputStream(InputStream in) throws IOException
{
byte[] buffer = new byte[1024];
ByteArrayOutputStream bytearray = new ByteArrayOutputStream();
int len = 0;
if(null == in)
{
return null;
}else
{
//正常解析
while((len = in.read(buffer, 0, 1024)) != -1)
{
bytearray.write(buffer);
}
String content = bytearray.toString();
if(content.indexOf("GBK") != -1 || content.indexOf("gbk") != -1)
{
//content = new String(content.getBytes(),"gbk");
//中国 》》 01 10
//只针对网页 解决乱码问题
/**
* 总结乱码问题:
* 以后做项目统一几个编码
* 1. 项目的编码
* 2. 网络编码
* 3. 获取的时候流的编码
* 4. 数据库的编码
*/
content = new String(bytearray.toByteArray(),"GBK");
}
bytearray.close();
return content;
}
}

}

转载于:https://www.cnblogs.com/wt-w/p/4922979.html

你可能感兴趣的文章
Android(Linux) 网卡名修改
查看>>
使用JavaScript给对象修改注册监听器
查看>>
最详细的Vue Hello World应用开发步骤
查看>>
优秀博客集合
查看>>
SQL Server 分页
查看>>
sql 入门经典(第五版) Ryan Stephens 学习笔记 第五部分: 性能调整
查看>>
jQuery tag标签插件
查看>>
OpenCV2:大学篇 形态学技术-腐蚀与膨胀操作
查看>>
【转】如何管理自己?
查看>>
练习1-10 编写一个将输入复制到输出的程序,并将其中的制表符替换成\t,把回退符替换成\b,把反斜杠替换成\\,这样可以将制表符和回退符以可见的方式显示出来...
查看>>
10 个Javascript框架和丰富的UI组件
查看>>
IE11浏览器中的My97日历控件刷新后无法打开问题解决办法
查看>>
会话保持:粘滞会话
查看>>
Git免密码提交
查看>>
Android手机外置SD卡(TF卡)的获取方法
查看>>
LeetCode 132. 分割回文串 II(Palindrome Partitioning II)
查看>>
关于PHP的引用赋值
查看>>
软件工程第三次作业
查看>>
默慈金数
查看>>
24、java操作xml方法
查看>>