2017-02-14 4 views
0

Я делаю приложение для Android, которое интегрируется с API Facebook и использует REST API, поэтому я использую Volley. Тем не менее, я пытаюсь выдать запрос GET для массива JSON и включить маркер авторизации Facebook для доступа к серверу. Большинство вопросов, которые я видел на этом относительно старые, и, похоже, Volley теперь обеспечивает поддержку, чтобы пройти в Params запроса (со страницы залп GitHub):GET Параметры запроса с помощью Volley

/** 
* Creates a new request. 
* @param method the HTTP method to use 
* @param url URL to fetch the JSON from 
* @param jsonRequest A {@link JSONArray} to post with the request. Null is allowed and 
* indicates no parameters will be posted along with request. 
* @param listener Listener to receive the JSON response 
* @param errorListener Error listener, or null to ignore errors. 
*/ 
public JsonArrayRequest(int method, String url, JSONArray jsonRequest, 
         Listener<JSONArray> listener, ErrorListener errorListener) { 
    super(method, url, (jsonRequest == null) ? null : jsonRequest.toString(), listener, 
      errorListener); 
} 

Но когда я делаю и выдать JsonArrayRequest , Я получаю com.android.volley.AuthFailureError. Вот мой код, кто-нибудь знает, что я делаю неправильно?

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    System.out.println("Yo im here"); 
    JSONObject requestParams = new JSONObject(); 
    JSONArray paramArray = new JSONArray(); 
    try { 
     requestParams.put("Authorization", "JWT (Facebook auth token)"); 
     paramArray.put(requestParams); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 

    System.out.println(paramArray.toString()); 

    RequestQueue queue = Volley.newRequestQueue(this); 

    JsonArrayRequest request = new JsonArrayRequest(Request.Method.GET, 
      GET_MAP_MICS, 
      paramArray, 
      new Response.Listener<JSONArray>() { 
       @Override 
       public void onResponse(JSONArray micArray) { 
        try { 
         for (int i = 0; i < micArray.length(); i++) { 
          JSONObject jsonobject = micArray.getJSONObject(i); 
          int micId = jsonobject.getInt("micId"); 
          String status = jsonobject.getString("status"); 
          System.out.println("Good so far!"); 
          double venLat = jsonobject.getDouble("venueLat"); 
          double venLong = jsonobject.getDouble("venueLat"); 
          System.out.println("got here, check it: " + venLat); 
         } 
        }catch (JSONException e) { 
          e.printStackTrace(); 
        } 
       } 
      }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError e) { 
      System.out.println(e); 
     } 
    }); 

ответ

0

GET метод не принимает параметры только POST будет

в вашем случае ваших проходных заголовкам как тело для GET метода у вас есть заголовки пасса

JsonObjectRequest request = new JsonObjectRequest(url, (JSONObject) null, new Response.Listener<JSONObject>() { 
      @Override 
      public void onResponse(JSONObject jsonObject) { 

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

      } 
     }) { 
      @Override 
      public Map<String, String> getHeaders() throws AuthFailureError { 
       Map<String, String> map = new HashMap<>(); 
       /*Add your headers here*/ 
       return super.getHeaders(); 
      } 
     }; 

последняя возможность есть два же класс имя будет в вашем проекте, например, любой lib, который вы используете, также используя volley lib, это случается раз для меня

+0

Спасибо за это, я ошибся в различии между параметрами и заголовками. Однако способ, которым вы опубликовали, не является допустимым способом переопределения метода getHeaders, каков был бы правильный способ переопределить этот метод? –

+0

есть только способ, которым заголовки pass похожи на это 'req' в' volley', используя 'Map ', если есть другой метод, дайте мне знать, если вы найдете его –

+0

Нет. Я просто имею в виду, что я получаю синтаксис ошибка при попытке добавить в свой Override getHeaders –

Смежные вопросы