Wie sende ich einen "multipart / form-data" POST in Android mit Volley
Hat sich schon jemand in der Lage zu erreichen, senden Sie eine multipart/form-data
POST im Android-mit Volleyball noch? Ich habe ohne Erfolg versucht hochzuladen image/png
mit einem POST request an unseren server, und bin neugierig, ob jemand hat.
Glaube ich, dass der Standard-Weg, dies zu tun wäre, zu überschreiben public byte[] getPostBody()
im Request.java
Klasse und befestigen Sie die File
dort mit einem leeren Header-Schlüssel für die Grenze. Allerdings, das umwandeln meiner Datei um eine String
für die Map<String, String> postParams
und dann, nachdem es erneut codiert scheint stumpf und nicht wirklich elegant. Auch ich habe schon erfolglos bei meinen versuchen. Dies ist wirklich das einzige, was hält uns zurück, die der Wechsel zu dieser Bibliothek.
Sowieso, alle Gedanken und Antworten sind extrem geschätzt. Danke für Eure Hilfe.
InformationsquelleAutor der Frage AllDayAmazing | 2013-05-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich mag mich irren, aber ich glaube, Sie brauchen, um Ihre eigenen
com.android.volley.toolbox.HttpStack
für diese da die Standard (HurlStack
wenn die version - > Lebkuchen oderHttpClientStack
) befassen sich nicht mitmultipart/form-data
.Edit:
Und in der Tat, ich war falsch. Ich war in der Lage, es zu tun mit
MultipartEntity
im Antrag so:Es ist ziemlich roh, aber ich habe es versucht mit einem Bild und einem einfachen string und es funktioniert. Die Antwort ist ein Platzhalter, macht nicht viel Sinn, eine Antwort zurück-String in diesem Fall. Ich hatte Probleme mit apache httpmime zu verwenden MultipartEntity so habe ich diese https://code.google.com/p/httpclientandroidlib/ weiß nicht, ob es einen besseren Weg.
Hoffe, es hilft.
Bearbeiten
Können Sie httpmime ohne Verwendung httpclientandroidlib, die einzige Abhängigkeit ist httpcore.
InformationsquelleAutor der Antwort alex
Wie bereits in der Präsentation auf der I/O (4:05), Volley "ist schrecklich" für große Nutzlasten. Wie ich es verstehe, dass das Mittel nicht zu verwenden Volley zum empfangen/versenden von (großen) Dateien. Blick auf den code es scheint, ist es auch nicht ausgelegt multipart form data (z.B. Request.java hat getBodyContentType() mit hardcoded "application/x-www-form-urlencoded"; HttpClientStack::createHttpRequest() kann mit nur byte[], etc...). Wahrscheinlich werden Sie in der Lage sein zu erstellen, die Umsetzung kann mit multipart aber Wenn ich du wäre, einfach HttpClient direkt mit MultipartEntity wie:
Müssen Sie möglicherweise neuer HttpClient (also nicht die built-in) oder noch besser, verwenden Volley mit neuer HttpClient
InformationsquelleAutor der Antwort Ognyan
Beispiel Für Die Nutzung
InformationsquelleAutor der Antwort AZ_
UPDATE 2015/08/26:
Wenn Sie nicht möchten, zu verwenden, veraltet HttpEntity, hier ist mein Arbeits-Beispielcode (getestet mit ASP.Net WebAPI)
MultipartActivity.java
BaseVolleyRequest.java:
ENDE UPDATE
Dies ist mein Arbeits-Beispiel-code (nur getestet mit kleiner Dateien):
InformationsquelleAutor der Antwort BNK
Einen sehr einfachen Ansatz für die dev, die wollen einfach nur senden POST-Parameter in mehrteiligen Anfrage.
Erste Definition dieser Konstanten :
Fügen Sie eine Hilfsfunktion zum erstellen einer post-body für Sie :
Überschreiben getBody() und getBodyContentType
InformationsquelleAutor der Antwort Arpit Ratan
Erste Antwort auf SO.
Ich hatte das gleiche problem und fand @alex 's code sehr hilfreich. Ich habe einige einfache änderungen vornehmen, um zu übergeben, so viele Parameter wie benötigt, durch eine HashMap, und haben im Grunde kopiert
parseNetworkResponse()
aus StringRequest. Ich habe online recherchiert und so überrascht zu erfahren, dass eine solche gemeinsame Aufgabe ist so selten beantwortet. Wie auch immer, ich Wünsche dem code helfen könnte:Und Sie können die Klasse verwenden, wie folgt:
InformationsquelleAutor der Antwort Michael Shang
Anderen Lösung, sehr Licht mit hoher Leistung mit einer Nutzlast groß:
Android Asynchronous Http Client library:
http://loopj.com/android-async-http/
InformationsquelleAutor der Antwort Hpsaturn
Hier ist die Lösung Einfach Und Vollständiges Beispiel für das Hochladen der Datei Mit Volley Android
1) Gradle Import
2)Erstellen Sie Nun eine Klasse RequestManager
3)Erstellen Sie Nun eine Klasse zum verarbeiten der Anforderung für das hochladen von Datei WebService
4) Und Rufen Sie Jetzt Die Methode, Wie Diese zu Schlagen, der service
InformationsquelleAutor der Antwort quick learner
Dies ist mein Weg, es zu tun. Es kann hilfreich sein, um andere :
InformationsquelleAutor der Antwort koteswara D K