Android核心技術-day04-02-網頁原始碼檢視器(StreamUtils)
阿新 • • 發佈:2018-11-07
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(); } }