Android 네트워크 프레임 워 크 - Volley (4) get 과 post 방법 으로 json 요청 보 내기

이 글 에서 우 리 는 볼 리 를 어떻게 사용 하 는 지 소개 하기 시 작 했 는데 그 중의 일 부 는 내 가 Ravi Tamada 블 로그 의 예 를 빌 렸 다.Ravi Tamada 는 질 좋 은 글 을 많이 썼 습 니 다. 관심 있 는 친구 가 블 로그 에 가서 공부 할 수 있 습 니 다. Android working with Volley Library.앞의 분석 을 통 해 우 리 는 볼 리 가 요청 을 보 내 는 전 제 는 우리 가 RequestQueue 를 만들어 야 한 다 는 것 을 알 게 되 었 다.안 드 로 이 드 네트워크 프레임 워 크 - Volley (2) RequestQueue 소스 코드 분석 및 RequestQueue 를 만 드 는 방법 에 대해 서 는 하나의 RequestQueue 를 만 드 는 방법 을 소개 합 니 다. 그렇지 않 으 면 친구 들 이 볼 수 있 습 니 다.
JSON 요청 보 내기
Volley 는 JSON 요청 을 보 내 는 클래스 인 JSonRequest 를 제공 합 니 다.우 리 는 그것 을 직접 사용 할 수 없습니다. 그것 은 추상 적 인 유형 입 니 다. 그 는 두 가지 키 가 있 습 니 다. Json Object Request 와 JsonArray Request 입 니 다.우 리 는 이 두 개의 하위 클래스 를 사용 하여 json 요청 을 보 냅 니 다.
JSonObject Request 사용 하기
//  request   TAG,         
String tag_json_obj = "json_obj_req";
 
String url = "http://api.androidhive.info/volley/person_object.json";
         
ProgressDialog pDialog = new ProgressDialog(this);
pDialog.setMessage("Loading...");
pDialog.show();     
        //    JsonObjectRequest  
        //        get  post  
        //            
        //           ,   null,    
        //        Listener  ,        
        JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.GET,
                url, null,
                new Response.Listener() {
                    //      ,        
                    @Override
                    public void onResponse(JSONObject response) {
                        Log.d(TAG, response.toString());
                        pDialog.hide();
                    }
                }, new Response.ErrorListener() {
                    //      ,      
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        VolleyLog.d(TAG, "Error: " + error.getMessage());
                        // hide the progress dialog
                        pDialog.hide();
                    }
                });
 
//    request   requestQueue ,      
AppController.getInstance().addToRequestQueue(jsonObjReq, tag_json_obj);

세 번 째 인자 가 왜 null 로 전 달 됐 는 지 궁금 하 다 면 Json Object Request 의 소스 코드 를 살 펴 보 겠 습 니 다.
//          ,(jsonRequest == null) ? null : jsonRequest.toString()  
//             ,    ,             ,     ,
//            。
public JsonObjectRequest(int method, String url, JSONObject jsonRequest,
            Listener listener, ErrorListener errorListener) {
        super(method, url, (jsonRequest == null) ? null : jsonRequest.toString(), listener,
                    errorListener);
    }

//                   get  post 。
//jsonRequest == null ? Method.GET : Method.POST        ,       
//   null,     get  ,    null,     post  
 public JsonObjectRequest(String url, JSONObject jsonRequest, Listener listener,
            ErrorListener errorListener) {
        this(jsonRequest == null ? Method.GET : Method.POST, url, jsonRequest,
                listener, errorListener);
    }

두 번 째 구조 방법 에서 알 수 있 듯 이 두 번 째 매개 변 수 는 우리 가 null 을 전달 하면 get 방법 을 사용 하고 null 을 전달 하지 않 으 면 post 방법 을 사용 합 니 다.사실 말 그대로 우리 도 이해 할 수 있 습 니 다. get 은 얻 는 것 입 니 다. 어떤 인 자 를 제출 할 필요 가 없습니다. post 는 제출 하 는 것 입 니까? 인 자 를 제출 해 야 합 니 다. 그래서 만약 에 우리 가 전달 할 인자 가 있다 면 post 방법 을 사용 합 니 다. 만약 에 전달 할 인자 가 없다 면 get 방법 을 사용 합 니 다.
그래서 위 에 코드 는 저희 가 이렇게 쓸 수 있어 요.
//  request   TAG,         
String tag_json_obj = "json_obj_req";
 
String url = "http://api.androidhive.info/volley/person_object.json";
         
ProgressDialog pDialog = new ProgressDialog(this);
pDialog.setMessage("Loading...");
pDialog.show();     
        JsonObjectRequest jsonObjReq = new JsonObjectRequest(url, null,
                new Response.Listener() {
                    @Override
                    public void onResponse(JSONObject response) {
                        Log.d(TAG, response.toString());
                        pDialog.hide();
                    }
                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        VolleyLog.d(TAG, "Error: " + error.getMessage());
                        pDialog.hide();
                    }
                });
 
//    request   requestQueue ,      
AppController.getInstance().addToRequestQueue(jsonObjReq, tag_json_obj);

이제 post 요청 을 어떻게 보 내 는 지 보도 록 하 겠 습 니 다.
//  request   TAG,         
String tag_json_obj = "json_obj_req";
 
String url = "http://api.androidhive.info/volley/person_object.json";
         
ProgressDialog pDialog = new ProgressDialog(this);
pDialog.setMessage("Loading...");
pDialog.show();     
        Map map=new HashMap();
        //     ,user=zhangqi
        map.put("user", "zhangqi");
        JSONObject params=new JSONObject(map);
        //         user=zhangqi。       post 
        JsonObjectRequest objRequest = new JsonObjectRequest(url, params,
                new Response.Listener() {
                    @Override
                    public void onResponse(JSONObject obj) {
                        Log.d(TAG, response.toString());
                        pDialog.hide();
                    }
                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                         VolleyLog.d(TAG, "Error: " + error.getMessage());
                        // hide the progress dialog
                        pDialog.hide();
                    }
                });
//    request   requestQueue ,      
AppController.getInstance().addToRequestQueue(jsonObjReq, tag_json_obj);

이렇게 써 도 돼 요.
String tag_json_obj = "json_obj_req";
 
String url = "http://api.androidhive.info/volley/person_object.json";
         
ProgressDialog pDialog = new ProgressDialog(this);
pDialog.setMessage("Loading...");
pDialog.show();     
        //           ,     post  ,       null,  
        //getParams()    
        JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.POST,
                url, null,
                new Response.Listener() {
 
                    @Override
                    public void onResponse(JSONObject response) {
                        Log.d(TAG, response.toString());
                        pDialog.hide();
                    }
                }, new Response.ErrorListener() {
 
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        VolleyLog.d(TAG, "Error: " + error.getMessage());
                        pDialog.hide();
                    }
                }) {
            //      map     ,           ,       
            @Override
            protected Map getParams() {
                Map params = new HashMap();
                params.put("name", "Androidhive");
                params.put("email", "[email protected]");
                params.put("password", "password123");
 
                return params;
            }
 
        };
 
AppController.getInstance().addToRequestQueue(jsonObjReq, tag_json_obj);

JSonArray Request 사용 하기
JsonArray Request 의 구조 방법 을 살 펴 보 겠 습 니 다.
//      url  ,      Listener  
public JsonArrayRequest(String url, Listener listener, ErrorListener errorListener) {
        super(Method.GET, url, null, listener, errorListener);
    }

매우 간단 하고 구조 함수 가 하나 밖 에 없 으 며 매개 변수 가 간단 한 우 리 는 설명 할 필요 가 없다.그냥 예 만 보면 돼.주석 이 필요 없어 요.
String tag_json_arry = "json_array_req";
 
String url = "http://api.androidhive.info/volley/person_array.json";
         
ProgressDialog pDialog = new ProgressDialog(this);
pDialog.setMessage("Loading...");
pDialog.show();     
         
JsonArrayRequest req = new JsonArrayRequest(url,
                new Response.Listener() {
                    @Override
                    public void onResponse(JSONArray response) {
                        Log.d(TAG, response.toString());        
                        pDialog.hide();             
                    }
                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        VolleyLog.d(TAG, "Error: " + error.getMessage());
                        pDialog.hide();
                    }
                });
 
AppController.getInstance().addToRequestQueue(req, tag_json_arry);



좋은 웹페이지 즐겨찾기