Je crée une application Android qui s'intègre à l'API Facebook et utilise une API REST, donc j'utilise Volley. Cependant, j'essaie d'émettre une requête GET pour un tableau JSON et je dois inclure le jeton d'autorisation Facebook pour accéder au serveur. La plupart des questions que je l'ai vu à ce sujet sont relativement vieux, et il semble que Volley prend désormais en charge de passer params de demande (à partir de la page GitHub volley):GET Demander des paramètres en utilisant 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);
}
Mais quand je fais et de délivrer une JsonArrayRequest , J'obtiens un com.android.volley.AuthFailureError. Voici mon code, est-ce que quelqu'un sait ce que je fais mal?
@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);
}
});
Merci pour cela, j'avais confondu la distinction entre les paramètres et les en-têtes. Cependant, la façon dont vous avez posté n'est pas une manière valide de remplacer la méthode getHeaders, quelle serait la bonne façon de surcharger cette méthode? –
il n'y a qu'une façon de passer les en-têtes est comme ça pour n'importe quel 'req' dans' volley' en utilisant 'Map' s'il y a une autre méthode faites moi savoir si vous trouvez –
Non je veux juste dire que j'obtiens une syntaxe erreur lors de la tentative d'ajout dans votre Override de getHeaders –