2016-07-10 4 views
0

Я хочу сделать запрос GET с параметрами, используя залп JsonArrayRequest. У меня есть метод getParam() с параметрами, но он не вызывает.Метод Volley getParam() для вызова метода JsonArrayRequest GET

JsonArrayRequest jreq = new JsonArrayRequest(Request.Method.GET,"http://api.openchargemap.io/v2/poi/",null, 
      new Response.Listener<JSONArray>() { 

       @Override 
       public void onResponse(JSONArray response) { 

        Log.d("TAG", "" + response.toString()); 
        if(response.toString().length() > 1) { 
         parseJson(response.toString()); 
        } 
       } 
      }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      Log.d("TAG",""+error.toString()); 
     } 
    }) 

    { 
     @Override 
     protected Map<String, String> getParams() { 
      Map<String,String> map = new HashMap<String,String>(); 
      map.put("output","json"); 
      map.put("countrycode","US"); 
      map.put("latitude","32.57933044"); 
      map.put("longitude","-110.8514633"); 
      map.put("maxresults","100"); 
      map.put("distance","10"); 
      map.put("distanceunit","KM"); 
      map.put("compact","true"); 
      map.put("verbose","false"); 
      return map; 
     } 
    }; 

    RequestQueue requestQueue = Volley.newRequestQueue(this); 
    requestQueue.add(jreq); 

Я не получаю должного ответа, потому что залп не вызывает getParam(). Я много искал при переполнении стека, но не получил правильного ответа, а документация по волейболу не очень хорошая. Вот почему я задаю свой вопрос здесь. Благодарю.

+0

Я пробовал ваш код, и он дает мне неизвестное исключение. вы уверены, что URL-адрес верен? –

+0

да. даже я получаю ответ, но не правильный ответ. –

ответ

2

Как видим здесь:

getParams():

Возвращает карту параметров, которые будут использоваться для POST или PUT запрос. Can throw * {@link AuthFailureError}, поскольку для предоставления этих значений может потребоваться аутентификация. ...

Таким образом, для использования Request.Method.GETUri.Builder вместо переопределения getParams метода для отправки параметров запроса URL

Как использовать Uri.Builder:

Uri.Builder urlBuilder = new Uri.Builder(); 
      builder.scheme("http") 
        .authority("api.openchargemap.io") 
        .appendPath("v2") 
        .appendPath("poi") 
        .appendQueryParameter("output",json) 
        ...// add other paramters in same way 
        ; 

Получить окончательный URL от застройщика:

URL finalURL = new URL(urlBuilder.build().toString()); 

Используйте код finalURL для создания запроса GET.

+0

благодарит за ответ. он работает сейчас. –