Datei hochladen mit okhttp

8

Ich beende dieses Projekt, das okhttp für die Kommunikation mit einem Webservice verwendet.

Bei regulären GETs und POSTs läuft alles gut, aber ich kann keine Datei richtig hochladen.

Die okhttp-Dokumente sind sehr mangelhaft und alles, was ich hier oder irgendwo gefunden habe, scheint in meinem Fall nicht zu funktionieren.

Es soll einfach sein: Ich muss sowohl die Datei als auch einige String-Werte senden. Aber ich kann nicht herausfinden, wie es geht.

Nach einigen Beispielen, die ich gefunden habe, habe ich das zuerst versucht:

%Vor%

Es gibt mir einen "400 schlechte Anfrage" Fehler.

Also habe ich das aus den okhttp-Rezepten probiert:

%Vor%

Gleiches Ergebnis.

Ich weiß nicht, was ich noch versuchen soll oder was ich mir ansehen muss, um das zu debuggen.

Die Anfrage ist mit diesem Code erledigt:

%Vor%

Aber ich bin mir ziemlich sicher, dass das Problem darin besteht, den Anfragekörper aufzubauen.

Was mache ich falsch?

EDIT: "getFile ()" oben gibt übrigens das a File-Objekt zurück. Der Rest der Parameter sind alle Strings und Ints.

    
diogo.abdalla 20.05.2015, 02:28
quelle

3 Antworten

20

Ich habe nach dem ersten Post eine Antwort auf meine eigene Frage gefunden.

Ich werde es hier lassen, weil es für andere nützlich sein kann, da es so ein paar okhttp Upload-Beispiele gibt:

%Vor%

Es gibt keinen Grund, "addPart" mit "Headers.of" usw. zu verwenden, wie in den Rezepten, addFormDataPart macht den Trick.

Und für das Dateifeld selbst braucht es 3 Argumente: Name, Dateiname und dann den Dateikörper. Das war's.

    
diogo.abdalla 20.05.2015 12:38
quelle
6

Ich habe gerade addFormDataPart anstelle von addPart geändert und schließlich mein Problem mit dem folgenden Code gelöst:

%Vor%     
Pratik Butani 02.12.2015 07:26
quelle
2

in OKHTTP 3 + verwenden Sie diese AsyncTask

SignupWithImageTask

%Vor%     
Arpit Patel 29.11.2016 13:06
quelle

Tags und Links