Html代码查看器

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没有成功连接就抛出异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值