標籤:com 效果 get over 開發 css json對象 使用 支援
向伺服器請求資料:
兩種請求方式:GET 與 POST
get一般用於從伺服器擷取資料,post一般用於向伺服器提交資料;
如何通過get擷取資料:
注意:在android4.0以後的版本,主線程(UI線程)不在支援網路請求,原因大概是影響主線程,速度太慢,容易卡機,所以需要開啟新的線程請求資料;
//HttpUrlConnection /** * 1.執行個體化一個url對象 * 2.擷取HttpUrlConnection對象 * 3.佈建要求串連屬性 * 4.擷取響應碼,判斷是否串連成功 * 5.讀取輸入資料流並解析 */ //參數:你要訪問的介面地址 new Thread(){ @Override public void run() { try { URL url = new URL("http://www.imooc.com/api/teacher?type=2"); HttpURLConnection coon = (HttpURLConnection) url.openConnection(); coon.setRequestMethod("GET"); coon.setReadTimeout(6000); //擷取響應碼 if(coon.getResponseCode() == 200){ //擷取輸入資料流 InputStream in = coon.getInputStream(); byte[] b = new byte[1024*512]; int len = 0; //建立緩衝流,儲存所讀取的位元組數組 ByteArrayOutputStream baos = new ByteArrayOutputStream(); while ((len = in.read(b)) > -1){ baos.write(b,0,len); } String msg = baos.toString();}.start
解析json普通資料
解析的資料
{ "status": 1, "data": { "title": "Tony老師聊shell——環境變數設定檔", "author": "Tony", "content": "本課程是《Tony老師聊shell》系列課程的第三篇,為你帶來常用的環境變數設定檔的使用。" }, "msg": "成功"}
使用JSONObject解析:
1 //JSON資料的解析: 2 JSONObject obj = new JSONObject(msg); 3 int status = obj.getInt("status"); 4 String msg2 = obj.getString("msg"); 5 Log.e("TAG", status + " " + msg2); 6 //解析data數組先擷取data對象 7 JSONObject jsonObject = obj.getJSONObject("data"); 8 String title = jsonObject.getString("title"); 9 String author = jsonObject.getString("author");10 String content = jsonObject.getString("content");11 Log.e("TAG", "標題:" + title + "," + author + ",內容:" + content);
使用GSON快速解析數組資料
資料:
1 { 2 "status": 1, 3 "data": [{ 4 "id": 1, 5 "name": "Tony老師聊shell——環境變數設定檔", 6 "picSmall": "http://img.mukewang.com/55237dcc0001128c06000338-300-170.jpg", 7 "picBig": "http://img.mukewang.com/55237dcc0001128c06000338.jpg", 8 "description": "為你帶來shell中的環境變數設定檔", 9 "learner": 1231210 }, {11 "id": 2,12 "name": "數學知識在CSS動畫中的應用",13 "picSmall": "http://img.mukewang.com/55249cf30001ae8a06000338-300-170.jpg",14 "picBig": "http://img.mukewang.com/55249cf30001ae8a06000338.jpg",15 "description": "數學知識與CSS結合實現酷炫效果",16 "learner": 4562517 }, {18 "id": 3,19 "name": "Oracle資料庫開發必備利器之PL/SQL基礎",20 "picSmall": "http://img.mukewang.com/5523711700016d1606000338-300-170.jpg",21 "picBig": "http://img.mukewang.com/5523711700016d1606000338.jpg",22 "description": "Oracle資料庫進階開發必備的基礎。",23 "learner": 4123624 }, {25 "id": 4,26 "name": "Android見證訊息推送時刻進階篇",27 "picSmall": "http://img.mukewang.com/551e470500018dd806000338-300-170.jpg",28 "picBig": "http://img.mukewang.com/551e470500018dd806000338.jpg",29 "description": "Android訊息推送就在眼前,Come on",30 "learner": 4545631 }, {32 "id": 5,33 "name": "Avalon探索之旅基礎教程——複雜綁定",34 "picSmall": "http://img.mukewang.com/551de0570001134f06000338-300-170.jpg",35 "picBig": "http://img.mukewang.com/551de0570001134f06000338.jpg",36 "description": "前端迷您MVVM架構,Avalon複雜綁定屬性篇。",37 "learner": 5655638 }, {39 "id": 6,40 "name": "Android-Service系列之斷點續傳下載",41 "picSmall": "http://img.mukewang.com/552640c300018a9606000338-300-170.jpg",42 "picBig": "http://img.mukewang.com/552640c300018a9606000338.jpg",43 "description": "想升職加薪嗎?本章課程你值得擁有",44 "learner": 4899645 }, {46 "id": 7,47 "name": "JUnit—Java單元測試必備工具",48 "picSmall": "http://img.mukewang.com/551b92340001c9f206000338-300-170.jpg",49 "picBig": "http://img.mukewang.com/551b92340001c9f206000338.jpg",50 "description": "Java單元測試利器!",51 "learner": 1321052 }, {53 "id": 8,54 "name": "細說Java多線程之記憶體可見度",55 "picSmall": "http://img.mukewang.com/5518c3d7000175af06000338-300-170.jpg",56 "picBig": "http://img.mukewang.com/5518c3d7000175af06000338.jpg",57 "description": "用兩種方式實現記憶體可見度",58 "learner": 1505159 }, {60 "id": 9,61 "name": "CSS動畫實用技巧",62 "picSmall": "http://img.mukewang.com/551b98ae0001e57906000338-300-170.jpg",63 "picBig": "http://img.mukewang.com/551b98ae0001e57906000338.jpg",64 "description": "教你使用CSS實現驚豔的動畫效果!",65 "learner": 1521066 }, {67 "id": 10,68 "name": "C++遠征之起航篇",69 "picSmall": "http://img.mukewang.com/550b86560001009406000338-300-170.jpg",70 "picBig": "http://img.mukewang.com/550b86560001009406000338.jpg",71 "description": "C++亮點盡在其中",72 "learner": 8454573 }],74 "msg": "成功"75 }
使用GSON快速擷取data數組資料
//1.建立Gson對象 Gson gson = new Gson(); //參數1:滿足json對象格式的字串 String data = obj.getString("data"); //Data實體類用來存放data數組的資料 ArrayList<Data> list = gson.fromJson(data, new TypeToken<ArrayList<Data>>() { }.getType()); for (int i = 0; i < list.size(); i++) { Data a = list.get(i); Log.e(TAG, "id =" + a.getId() + "name=" + a.getName()); }
使用GSON可以快速的擷取json資料中數組的資料,而不需要一個一個的擷取jsonobject對象,然後再一個一個的擷取資料.
Android_網路操作