Ich schicke ein Array von ganzen Zahlen an das Backend über diese Retrofit-Schnittstelle senden:Retrofit 2 ein leeres Array
@PATCH("save/ids")
@FormUrlEncoded
Call<Output> saveIds(@Field("ids[]") List<Integer> ids);
Jetzt funktioniert dies, wenn ich ein ArrayList
mit einigen Einzelteilen haben. Aber um alle IDs zurückzusetzen wollen die Server ein leeres Array namens ids
. Wenn ich ein leeres Array sende, sendet Retrofit das Array nicht - es lässt nur den Parameter fallen.
Ich eröffne mein ArrayList
wie folgt:
List<Integer> ids = new ArrayList<>();
for (FooObjects object : listOfIds) {
if (object.isEnabled()) {
ids.add(object.getId());
}
}
Wie kann ich trotzdem ein leeres Array schicken?
Was ist _exact_ Nutzlast der Liste, die Sie senden werden? So etwas wie 'ids = [1,2,3]' und 'ids = []'? –
Es sollte ids = [] sein, aber weil das IDs-Array leer ist, sendet Retrofit nicht IDs = []. – user1007522
Sie scheinen also Erwartungen zu haben. Tatsächlich sendet Retrofit 'ids [] = foo & ids [] = bar & ids [] = baz', nicht' ids [] = [foo, bar, baz] '. –