您的位置:首页 > Web前端 > HTML

解析html

2015-12-17 09:00 537 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/l__yx/article/details/50337153
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(bytearray.toByteArray(),"GBK");

}

bytearray.close();
return content;
}
}

}
<RelativeLayout 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"
tools:context="com.xh.tx.html.MainActivity" >

<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<TextView
android:id="@+id/tv_html_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
</ScrollView>
</RelativeLayout>


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: