您的位置:首页 > 理论基础 > 计算机网络

自己写http获取网络资源和解析json数据

2017-03-10 09:48 513 查看
虽然github上有很多开源的,方便的jar报,用起来也很方便,但我们也需要了解其中的原理,如何自己不用第三方jar包来获取网络资源
主要代码如下:  因为联网是耗时的操作,所以需要另开一个线程来执行

1 new Thread(){
2             public void run() {
3                 try {
4
5                     //首先声明url连接对象
6                     URL url=new URL(path);
7                     //获取HttpURLConnection对象
8                     HttpURLConnection connection = (HttpURLConnection) url.openConnection();
9 //                    connection.setReadTimeout(5000);
10                     //设置连接超时时间,毫秒为单位
11                     connection.setConnectTimeout(5000);
12
13                     //http方式
14                     connection.setRequestMethod("GET");
15
16                     //设置http头属性
17                     connection.setRequestProperty("apikey",  "0a37fe84ecb7c6fe98ca3e8ba48b5f24");
18                     //获取返回码//200为正常      404 找不到资源
19                     int code = connection.getResponseCode();
20                     if(code==200){
21
22                         //获取字节流
23                         InputStream inputStream = connection.getInputStream();
24                         //解析字节流
25                         BufferedReader bf=new BufferedReader(new InputStreamReader(inputStream, "utf-8"));
26                         StringBuilder sb=new StringBuilder();
27                         String s=null;
28                         while ((s=bf.readLine())!=null) {
29                             sb.append(s+"\r\n");
30                         }
31
32                         //解析json对象
33                         JSONObject jsonObject = new JSONObject(sb.toString());
34                         JSONArray jsonArray = jsonObject.getJSONArray("newslist");
35                         for (int i = 0; i < jsonArray.length(); i++) {
36                             news n= new news();
37                             JSONObject jsonObject2 = jsonArray.getJSONObject(i);
38                             n.setTime(jsonObject2.getString("ctime"));
39                             n.setTitle(jsonObject2.getString("title"));
40                             n.setDescription(jsonObject2.getString("description"));
41                             n.setPicUrl(jsonObject2.getString("picUrl"));
42                             n.setUrl(jsonObject2.getString("url"));
43                             list.add(n);
44                         }
45
46                     }
47                 } catch (Exception e) {
48                     e.printStackTrace();
49                 }
50             };
51
52         }.start();


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: