2016-05-16 20 views
5

Come posso postare i seguenti parametri in retrofit attraverso il metodo post?Come postare array in retrofit android

"params":{"body": { 
"learning_objective_uuids": [ 
    "ED4FE2BB2008FDA9C8133FF462959C0968FAB98C4D1DB8F2" 
], 
"note": "FasfAFSASFASDF", 
"user_uuids": [ 
    "EDF8B7EC20005ACC5C40FF7D6E988801F5BAD83CBBCDB97F", 
    "EDF8F78F2000569C64101F244AA20C0070D2A7FCB1939E19" 
] 

} } }}

+0

quale parametro? Ci sono molti parametri più di un ... – hkaraoglu

+0

Questi parametri: - "learning_objective_uuids": [ "ED4FE2BB2008FDA9C8133FF462959C0968FAB98C4D1DB8F2" ], "nota": "FasfAFSASFASDF", "user_uuids": [ "EDF8B7EC20005ACC5C40FF7D6E988801F5BAD83CBBCDB97F", "EDF8F78F2000569C64101F244AA20C0070D2A7FCB1939E19 " ] }}} –

+0

Ho scritto la risposta qui sotto .. – hkaraoglu

risposta

14
@FormUrlEncoded 
@POST("service_name") 
    void functionName(
     @FieldMap Map<String, String> learning_objective_uuids, @FieldMap Map<String, String> user_uuids, @Field("note") String note, 
     Callback<CallBackClass> callback 
    ); 

Soluzione migliore: Usa arraylist .. Riferimento link: johnsonsu

@FormUrlEncoded 
    @POST("service_name") 
     void functionName(
      @Field("lost_project_reasons[]") ArrayList<String> learning_objective_uuids, @Field("lost_project_reasons[]") ArrayList<String> user_uuids, @Field("note") String note, 
      Callback<CallBackClass> callback 
     ); 
+0

Ottenere la seguente risposta: - retrofit.RetrofitError: 400 Bad Request –

+0

Metti la tua funzione che lei stesso ha scritto . – hkaraoglu

+0

Si prega di votare la mia risposta se ti ha aiutato! – hkaraoglu

1

Vai a questo sito: JSON Schema 2 POJO

Incollare il tuo esempio formato JSON e poi

Selezionare il tipo di fonte: JSON, lo stile della nota: Nessuno

Creare una classe POJO quindi, ad esempio il nome della classe: MyPOJOClass

Poi, nel tuo Api:

@POST("endpoint") 
public Call<Void> postArray(@Body MyPOJOClass mypojoclass); 

Se si dispone di intestazioni anche voi potete aggiungerli nei parametri del genere:

@Header("Accept") String accept,@Header("Content-Type") String contentType 

@EDIT: per il tuo commento checkout la mia risposta: how-to-use-gson-2-0-on-onresponse-from-retrofit-2-0

+0

Attualmente sto usando questo metodo: - @POST (Constants.POST_UPLOAD_NOTES) public void postNotes (@Body JSONArray jsonArray, @ Query ("note") String note, Callback callback); } –

+0

cassa mia sezione @EDIT, è possibile trovare un esempio di richiesta e come gestire la risposta .È possibile combinare entrambe le risposte –

2

vedono questo esempio in cui ho bisogno di passare i dati campi di registrazione come richiesta JSON

@POST("magento2apidemo/rest/V1/customers") 
Call<RegisterEntity> customerRegistration(@Body JsonObject registrationData); 

qui ho creato registrationData è

private static JsonObject generateRegistrationRequest() { 
     JSONObject jsonObject = new JSONObject(); 
     try { 
      JSONObject subJsonObject = new JSONObject(); 
      subJsonObject.put("email", "[email protected]"); 
      subJsonObject.put("firstname", "abc"); 
      subJsonObject.put("lastname", "xyz"); 

      jsonObject.put("customer", subJsonObject); 
      jsonObject.put("password", "password"); 

     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     JsonParser jsonParser = new JsonParser(); 
     JsonObject gsonObject = (JsonObject) jsonParser.parse(jsonObject.toString()); 
     return gsonObject; 
    } 
Problemi correlati