2016-11-23 4 views
0

Ich verwende Volley erfolgreich, um JSONArrays und JSONObjects zu übergeben und zu empfangen, aber die API, die ich verwende, erfordert, dass ich ein einfaches Integer-Array [1,2,3] in einer PUT-Anfrage übergebe. Irgendwelche Ideen?Wie kann ich einen einfachen Integer [] an Volley übergeben?

Hier ist ein Ausschnitt aus der API-Dokumentation.

PUT api/Pendler/{id}/Favoriten

Aktualisieren Sie die Liste der beliebtesten Pendler mit dem angegebenen Pendler verbunden.

REQUEST
Körperparameter: Collection of integer Formate anfordern
application/json, text/json, text/html Beispiel: [1, 2]

RESPONSE
keine

+0

einen Blick auf dieses stacoverflow Haben [Antwort] (http://stackoverflow.com/a/32882196/4770978). –

+0

Das ist ein gültiges JSON-Array, damit Sie bei Ihrer vorhandenen Logik bleiben können. Oder verwenden Sie 'TextUtils.join()', um das Komma-Trennzeichen zu behandeln, und umschließen Sie das Ergebnis in eckigen Klammern. Oder iteriere über deine ganzen Zahlen und baue einen 'StringBuilder' auf. – CommonsWare

+0

Beim Überschreiben der Methode getParams wird eine Zuordnung benötigt. Wie gebe ich ein JSONArray weiter? Ich denke, das sollte eine einfache Lösung sein, daher muss ich etwas verpassen. – dawoodman71

Antwort

0

Der Trick zum Senden t ext einer Volley-Anfrage überschreibt die getBoddy-Methode, um Ihren Text/json auszudrucken.

Hier ist meine Methode für die Umsetzung der Integer-Array:

public static void putFavorites(final JSONArray data, final MyApp.StringCallback callback) { 

    String url = APP_API + "commuters/" + 
      MyApp.getPrefs().getInt("commuterId", 0) + "/favorites"; 
    StringRequest stringRequst = new StringRequest(Request.Method.PUT, url, 
      new Response.Listener<String>() { 
       @Override 
       public void onResponse(String result) { 
        try { 
         callback.onSuccess(result); 
        } catch (Exception e) { 
         e.printStackTrace(); 
        } 
       } 
      }, 
      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError volleyError) { 
        callback.onError(volleyError); 
       } 
      }) { 


     @Override 
     public String getBodyContentType() { 
      return "text/json"; 
     } 

     @Override 
     public byte[] getBody() throws AuthFailureError { 
      Log.d(TAG, (data.toString()).getBytes().toString()); 
      return (data.toString()).getBytes(); 
     } 

     @Override 
     public Map<String, String> getHeaders() throws AuthFailureError { 
      Map<String,String> headers = VolleySingleton.getInstance(GACommuter.getAppContext()).getVolleyHeader("text/json"); 
      return headers; 
     } 
    }; 

    stringRequst.setRetryPolicy(new DefaultRetryPolicy(
      20000, 
      DefaultRetryPolicy.DEFAULT_MAX_RETRIES, 
      DefaultRetryPolicy.DEFAULT_BACKOFF_MULT 
    )); 

    addToRequestQueue(stringRequst); 
} 
Verwandte Themen