Html代碼查看器 效果: 分析: 1、連接網路需要許可權 <uses-permission android:name="android.permission.INTERNET" /> 2、要把預設協議和預設埠http和80寫上 3、把訪問網路的代碼放在AsyncTask裡面 4、得到內容類型兩種方 ...
Html代碼查看器
效果:
分析:
1、連接網路需要許可權
<uses-permission android:name="android.permission.INTERNET" />
2、要把預設協議和預設埠http和80寫上
3、把訪問網路的代碼放在AsyncTask裡面
4、得到內容類型兩種方法
String contentType=conn.getHeaderField("Content-Type");
conn.getContentType
5、分割函數
String encoding=contentType.split("=")[0];
以等號為分割,取第0段
代碼:
1 package fry; 2 3 import java.io.InputStreamReader; 4 import java.net.HttpURLConnection; 5 import java.net.MalformedURLException; 6 import java.net.URL; 7 8 import com.example.watchCode.R; 9 10 import android.app.Activity; 11 import android.os.AsyncTask; 12 import android.os.Bundle; 13 import android.util.Log; 14 import android.view.View; 15 import android.widget.Button; 16 import android.widget.EditText; 17 18 public class Activity01 extends Activity{ 19 private Button btn_checked; 20 private EditText et_webSite; 21 private EditText et_content; 22 @Override 23 protected void onCreate(Bundle savedInstanceState) { 24 // TODO Auto-generated method stub 25 super.onCreate(savedInstanceState); 26 setContentView(R.layout.activity01); 27 28 btn_checked=(Button) findViewById(R.id.btn_checked); 29 et_webSite=(EditText) findViewById(R.id.et_webSite); 30 et_content=(EditText) findViewById(R.id.et_content); 31 32 } 33 34 35 public void onClick(View view){ 36 //獲取編輯框輸入的網址 37 String urlStr=et_webSite.getText().toString(); 38 new AsyncTask<String,Void,String>(){ 39 40 @Override 41 protected String doInBackground(String... arg0) { 42 //字元串緩衝區 43 StringBuffer buffer= new StringBuffer(); 44 try { 45 String s=arg0[0]+":80"; 46 //封裝URL對象 47 URL url=new URL(s); 48 //獲取http連接對象 49 HttpURLConnection conn =(HttpURLConnection) url.openConnection(); 50 conn.setRequestMethod("GET"); 51 conn.setConnectTimeout(5000); 52 //獲取狀態碼 53 int code=conn.getResponseCode(); 54 Log.d("fry", "獲取到狀態碼:"+code); 55 if(code==200){//請求成功 56 String contentType=conn.getHeaderField("Content-Type"); 57 String encoding=contentType.split("=")[0]; 58 Log.d("fry", encoding); 59 //獲取響應消息的實體內容 60 InputStreamReader reader=new InputStreamReader(conn.getInputStream(),"UTF-8"); 61 char[] charArr=new char[1024*8]; 62 int len=0; 63 while((len=reader.read(charArr))!=-1){ 64 //字元數組轉字元串 65 String str=new String(charArr,0,len); 66 //在結尾追加字元串 67 buffer.append(str); 68 } 69 } 70 71 } catch (Exception e) { 72 e.printStackTrace(); 73 } 74 75 return buffer.toString(); 76 } 77 protected void onPostExecute(String result) { 78 //設置字元串到編輯框 79 et_content.setText(result); 80 81 }; 82 83 }.execute("http://"+urlStr); 84 } 85 86 }
本來getResponseCode做了連接、獲取狀態碼,返回狀態碼三件事。
現在conn.connect()把連接這件事做了。
5000ms沒有成功連接就拋出異常