<span style="font-family: Arial, Helvetica, sans-serif;">package com.xh.tx.html;</span>
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.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
private 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 e) {
e.printStackTrace();
}
}
private 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){
/**
* 总结乱码问题:
* 1.项目的编码
* 2.网络编码
* 3.获取的时候流的编码
* 4.数据库的编码
*/
content = new String (bytearray.toByteArray(),"GBK");
}
bytearray.close();
return content;
}
}
}