Questo è un esempio di lavorare con dati JSONArray e le intestazioni.
Innanzitutto creare una propria implementazione richiesta di misura Tipo:
public class JsonRequest extends JsonObjectRequest {
public JsonRequest(int method, String url, JSONObject jsonRequest, Response.Listener
<JSONObject> listener, Response.ErrorListener errorListener) {
super(method, url, jsonRequest, listener, errorListener);
}
@Override
protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) {
try {
String jsonString = new String(response.data,
HttpHeaderParser.parseCharset(response.headers, PROTOCOL_CHARSET));
JSONObject jsonResponse = new JSONObject();
jsonResponse.put("data", new JSONArray(jsonString));
jsonResponse.put("headers", new JSONObject(response.headers));
return Response.success(jsonResponse,
HttpHeaderParser.parseCacheHeaders(response));
} catch (UnsupportedEncodingException e) {
return Response.error(new ParseError(e));
} catch (JSONException je) {
return Response.error(new ParseError(je));
}
}
}
e nel tuo codice di richiesta:
JsonRequest request = new JsonRequest
(Request.Method.POST, URL_API, payload, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
JSONArray data = response.getJSONArray("data");
JSONObject headers = response.getJSONObject("headers");
} catch (JSONException e) {
Log.e(LOG_TAG, Log.getStackTraceString(e));
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e(LOG_TAG, Log.getStackTraceString(error));
}
});
Visualizza maggiori informazioni sull'implementazione di vostra richiesta personalizzato nella documentazione Volley Implementing a Custom Request.
Grazie !! Funziona!! Sto facendo il mio lavoro nelle intestazioni di parseNetworkResponse invece di aggiungere le intestazioni al JSONObject restituito. – Chopi