Android_網路操作

來源:互聯網
上載者:User

標籤: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_網路操作

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.