Ich entwickle eine Anwendung, bei der der Benutzer zu irgendeinem Zeitpunkt eine beliebige Anzahl von Ländern aus einer Liste auswählen muss und ich die ausgewählten Namen über ein Multipart senden muss.Ist es möglich, einen String [] über Multipart mit Retrofit zu senden?
Ich lade keine Datei zusammen mit dem String [] hoch, aber es gibt keine Route zum Hochladen von Informationen, ohne dass es ein Multipart ist und ich habe keine Aussagen darüber, wie der Webserver funktioniert.
Ich habe versucht, es einfach zu senden, wie ein Array, Arraylist und JsonArray als solche:
@Headers({
"Connection: Keep-Alive",
})
@Multipart
@PUT("/user/{id}")
String updateUser(@Path("id") int userId, @Part("user[countries]") String[] countries);
ich auch this solution versucht habe, aber ich es entweder falsch verstanden oder es funktioniert nicht. Hier ist der Code, den ich verwenden wollte:
ArrayList<String> countries = CountryManager.getInstance().getSelectedCountryIds();
RequestBody requestBody;
LinkedHashMap<String, RequestBody> hashMap = new LinkedHashMap<>();
for(int i = 0; i < countries.size(); i++) {
requestBody = RequestBody.create(MediaType.parse("text/plain"), countries.get(i));
hashMap.put("countries["+i+"]", requestBody);
}
und Ändern des Retrofit-Methode entsprechend:
@Headers({
"Connection: Keep-Alive",
})
@Multipart
@PUT("/user/{id}")
String updateUser(@Path("id") int userId, @PartMap() Map countries);
jedoch bei allen Versuchen ich den Fehler retrofit.RetrofitError bekommen haben: Part Körper darf nicht null sein .
Ich habe auch erwähnt, dass die ChangeLog zur Nachrüstung erwähnt „Neu: iterable und Array-Unterstützung @Part
Parameter MultipartBody.Part
mit OkHttp des“, aber nach einigen Graben, habe ich das gegebene Beispiel ziemlich verwirrend zu dem Punkt, dass ich gefunden Ich war mir nicht sicher, wie ich es in meinen Code implementieren konnte und konnte kein Tutorial finden, das sogar das Senden von Arrays in einem Multipart erwähnte.
Ist so etwas einfach unmöglich?
Die Lösung mit PartMap Annotation scheint richtig zu sein. Ich habe es in einigen Apps verwendet und funktioniert gut. Sind Sie sicher, dass alle Länder nicht null sind? – Pablo