歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android網絡請求Volley

Android網絡請求Volley

日期:2017/3/1 9:09:14   编辑:Linux編程

我們平時工作中用到的網絡請求無非是HttpClient或者是HttpURLConnection,前者目前已經被完全廢棄了,所以Volley網絡框架裡會有判斷版本,與其自己寫網絡請求接口,不如用Google提供的Volley框架,方便的多,Volley既可以進行普通的網絡請求,也可以請求網絡圖片,今天我先只分享普通的網絡請求,網絡圖標後面再說,先從網上下載Volley源碼,然後引入到工程中,這個不說了,我們進行網絡請求分為兩種,get和post,先看普通的get請求:

RequestQueue mQueue = Volley.newRequestQueue(MainActivity.this);
StringRequest stringRequest = new StringRequest("後台地址", new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                Log.e("fuqiang",response.toString());
            }

            @Override
            public void onResponseHeaders(Map<String, String> headers) {

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

            }
        }){

            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                Map<String,String> map = new HashMap<>();
                map.put("key","value");
                return map;
            }
        };
mQueue.add(stringRequest);

先定義一個RequestQueue 的隊列,然後定義一個StringRequest,第一個參數是後台地址,第二個參數new Response.Listener是正常返回的結果,第三個參數new Response.ErrorListener()是錯誤返回的結果,getHeaders()是傳遞消息頭,onResponseHeaders是返回的消息頭,最後把StringRequest加入到RequestQueue 的隊列中即可,就這麼簡單,接下來看下Post請求,其實也就是多一個參數,然後多一個getParams返回,進行參數的傳遞而已,看下面代碼:

StringRequest stringRequest = new StringRequest(Request.Method.POST,"後台地址", new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                Log.e("fuqiang",response.toString());
            }

            @Override
            public void onResponseHeaders(Map<String, String> headers) {

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

            }
        }){

            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                Map<String,String> map = new HashMap<>();
                map.put("key","value");
                return map;
            }
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String,String> map = new HashMap<>();
                map.put("key","value");
                return map;
            }
        };

第一個參數Request.Method.POST指定網絡請求方式是Post,然後getParams裡可以把網絡請求參數放到HashMap裡,然後傳遞給服務端。
除了StringRequest,還有JsonObjectRequest和JsonArrayRequest,用法和StringRequest類似,只是返回的結果要麼是JSONObject,要麼是JSONArray,如下:

JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST,"後台地址", null, new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                Log.e("fuqiang",response.toString());
            }

            @Override
            public void onResponseHeaders(Map<String, String> headers) {

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

            }
        }){
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String,String> map = new HashMap<>();
                map.put("key","value");
                return map;
            }

            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                Map<String,String> map = new HashMap<>();
                map.put("key","value");
                return map;
            }
        };


JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Request.Method.POST,"後台地址",null,new Response.Listener<JSONArray>(){
            @Override
            public void onResponse(JSONArray response) {

            }

            @Override
            public void onResponseHeaders(Map<String, String> headers) {

            }
        },new Response.ErrorListener(){
            @Override
            public void onErrorResponse(VolleyError error) {

            }
        }){
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String,String> map = new HashMap<>();
                map.put("key","value");
                return map;
            }

            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                Map<String,String> map = new HashMap<>();
                map.put("key","value");
                return map;
            }
        };

記得最後要加入到隊列中,好了,網絡請求就說到這,後面我會分析網絡圖片的請求,如有問題,歡迎指正,謝謝。

更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11

Copyright © Linux教程網 All Rights Reserved