Ich erstelle eine Anwendung für Android und ich habe gerade angefangen, Retrofit 2 zu verwenden. Ich muss ID, Name, Code und Fotos auf Server hochladen, aber ich weiß nicht, wie das mit Retrofit 2 zu tun ist. Wie Sie sehen werden Klasse unten ich weiß nicht, wie viele Fotos ich werde laden müssen ...Wie können Sie mehrteilige Formulardaten, die eine unbekannte Anzahl von Bildern enthalten, mit Retrofit 2 posten?
ich diese Klasse haben:
class Asset {
private int mId;
private int mName;
private int mCode;
private ArrayList<String> mPhotos;
// ... constructor
// ... getters and setters
}
I und das ist Repository:
class AssetsRepository {
// ... private fields
// ... constructor
public void store(Asset asset, final AssetUploadCompletedCallback callback) {
// What should be the arguments?
this.mNPApiService.storeAsset(asset.getCode() /*, ...*/)
.enqueue(new Callback<String>() {
@Override
public void onResponse(Call<String> call, Response<String> response) {
callback.onAssetUploadCompletedCallback();
}
@Override
public void onFailure(Call<String> call, Throwable t) {
//error handling
}
});
}
}
und NPApiservice Schnittstelle:
Ich brauche auch einen Fortschrittsbalken mit Prozentsatz, also wie kann ich Hörer anhängen, der mir sagen wird, insgesamt Upload Prozentsatz der Anfrage?
Ich habe ähnliche Methode in meiner 'NPApiService' Schnittstelle und im Repository implementiert Erstellung von' MultipartBody.Part [] 'Array, aber ich weiß immer noch nicht, wie kann ich Upload-Fortschritt in Prozent zu verfolgen. Ich habe dieses Beispiel gefunden: https://www.cumulations.com/blogs/34/Retrofit-File-Update-Progress, aber ich habe viele Dateien und auch andere Parameter wie 'name',' id' und 'code' im Körper der Anfrage, und ich brauche insgesamt Upload Prozentsatz der Anfrage. Unterteile ich RequestBody und MultipartBody.Part, berechne die Gesamtlänge des Körpers meiner Anfrage selbst und füge den Listener wie im Beispiel vorgeschlagen hinzu. – clzola
ja - Sie können weitermachen, wenn Sie die Gesamtlänge des Anfragekörpers einschließlich aller Bilder berechnen können. Ich habe das gleiche gemacht, aber ohne Fortschritte entsprechend meinen Anforderungen. –
Ich habe genau das gemacht, ich habe 'RequestBody' Klasse erweitert und meine Puffergröße 4096 Bytes lang gemacht (Code ist dem Link sehr ähnlich, den ich im vorherigen Kommentar gepostet habe) und ich hoffe die Puffergröße ist in Ordnung. Und alles funktioniert! – clzola