虽然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();
所有评论(0)