package com.gaozewen.htmlviewer.utils;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
/**
* 流的工具类
* @author gzw
* @version $Rev$
* @des ${TODO}
* @updateAuthor $Author$
* @updateDes ${TODO}
*/
public class StreamUtils {
/**
* 读取流的数据 返回一个字符串
* @param is 获取流
* @return 字符串,如果解析失败返回空
*/
public static String readStream(InputStream is) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
try {
while((len = is.read(buffer))!= -1){
baos.write(buffer,0,len);
}
is.close();
String result = baos.toString();
if(result.contains("gb2312")){
return baos.toString("gb2312");
}else if (result.contains("gbk")){
return baos.toString("gbk");
}
return result;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
package com.gaozewen.htmlviewer;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.gaozewen.htmlviewer.utils.StreamUtils;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class MainActivity extends AppCompatActivity {
private static final int LOAD_SUCCESS = 1;
private static final int LOAD_ERROR = 2;
private EditText mEt_url;
private TextView mTv_result;
private Handler mHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
switch (msg.what){
case LOAD_SUCCESS:
String text = (String) msg.obj;
mTv_result.setText(text);
break;
case LOAD_ERROR:
Toast.makeText(MainActivity.this,"加载失败", Toast.LENGTH_SHORT).show();
break;
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mEt_url = (EditText) findViewById(R.id.et_url);
mTv_result = (TextView) findViewById(R.id.tv_result);
}
/**
* 1. 声明权限
* 2. 开启子线程
*
* @param view
*/
public void viewHtmlSource(View view) {
final String str_url = mEt_url.getText().toString().trim();
if (TextUtils.isEmpty(str_url)) {
Toast.makeText(this, "url不能为空", Toast.LENGTH_SHORT).show();
return;
}
new Thread() {
@Override
public void run() {
try {
URL url = new URL(str_url);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
int code = conn.getResponseCode();
if (code == 200){
InputStream is = conn.getInputStream();
// 将输入流转化为字符串
String text = StreamUtils.readStream(is);
Message msg = Message.obtain();
msg.obj = text;
msg.what = LOAD_SUCCESS;
mHandler.sendMessage(msg);
}else {
Message msg = Message.obtain();
msg.what = LOAD_ERROR;
mHandler.sendMessage(msg);
}
} catch (Exception e) {
e.printStackTrace();
Message msg = Message.obtain();
msg.what = LOAD_ERROR;
mHandler.sendMessage(msg);
}
}
}.start();
}
}