2016-10-27 3 views
1

Метод getRequest - это попытка обрабатывать GET.Как передать параметры водителю JsonArrayRequest

JsonArrayRequest принимает объект JSONArray, могу ли я использовать этот объект «JSONArray» для применения параметров строки запроса или мне нужно самостоятельно изменить URL-адрес.

public static void getRequest(final String tag, String url, JSONArray params, final GetRequest consumer, final ResponseFilter filt){ 
    Log.d("Server",url); 
    String REQUEST_TAG = "GETMultiRequest"; 
    JsonArrayRequest jsArrRequest = new JsonArrayRequest 
      (Request.Method.GET, url, params, new Response.Listener<JSONArray>() { 

       @Override 
       public void onResponse(JSONArray response) { 
        Log.d("Response", "received successfully"); 
        consumer.update(filt.filter(response), tag); 
       } 

      }, new Response.ErrorListener(){ 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        VolleyLog.d(TAG, "Error: " + error.getMessage()); 
       } 
      }); 
    AppRequestSingleton.getInstance(((Activity)consumer).getApplicationContext()).addToRequestQueue(jsArrRequest, REQUEST_TAG); 
} 
+1

, если вы используете метод GET, то передать параметр с url как YOUR_URL +? + PARAMETER_NAME = параметр; – LoveAndroid

ответ

0

Вы можете использовать StringRequest вместо использования JsonArrayRequest и Override getParam(), а также изменить параметры HashMap из JSONArray

Код должен быть как:

public static void getRequest (final String tag, String url, final JSONArray params, final GetRequest consumer, final ResponseFilter filt) { 

     // Converting JSONArray parameters into HashMap 
     final HashMap<String, String> pairs = new HashMap<String, String>(); 
     for (int i = 0; i < params.length(); i++) { 
      JSONObject j = params.optJSONObject (i); 
      Iterator it = j.keys(); 
      while (it.hasNext()) { 
       String n = (String) it.next(); 
       try { 
        pairs.put (n, j.getString (n)); 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      } 
     } 

     Log.d ("Server", url); 
     String REQUEST_TAG = "GETMultiRequest"; 
     StringRequest strRequest = new StringRequest (Request.Method.GET, url, 
       new Response.Listener<String>() { 
        @Override 
        public void onResponse (String resp) { 
         try { 
          JSONArray response = new JSONArray (resp); 
          Log.d ("Response", "received successfully"); 
          consumer.update (filt.filter (response), tag); 
         } catch (JSONException e) { 
          e.printStackTrace(); 
         } 
        } 
       }, 
       new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse (VolleyError error) { 
         VolleyLog.d (TAG, "Error: " + error.getMessage()); 
        } 
       }) { 
      @Override 
      protected Map<String, String> getParams() throws AuthFailureError { 
       return pairs; 
      } 
     }; 
     AppRequestSingleton.getInstance (((Activity) consumer).getApplicationContext()).addToRequestQueue (strRequest, REQUEST_TAG); 
    } 
Смежные вопросы