Wie zum hochladen von binären Daten mit Hilfe des POST -
Ich habe so etwas wie dies in meinem code:
String boundary = "thisIsMyBoundaryString";
StringBuilder body = new StringBuilder();
...
byte[] data = bos.toByteArray();
body.append(new String(data));
body.append("\r\n--" + boundary + "--\r\n");
String entity = body.toString();
Baue ich eine POST-Anfrage und das einfügen muss einige binäre Daten (JPEG-komprimierte bitmap).
Nachdem man byteArray möchte ich anfügen, newLine und boundary-string,
aber die StringBuilder-beschädigt - scheint, dass die bytes aus den zusätzlichen Randbedingungen
werden Fehlstellungen von diesem Zeitpunkt an
und Sie werden nicht mehr interpretiert, als meine ursprüngliche Zeichenfolge aber als einige zufällige Zeichen.
Ist das, was ist hier passiert?
Wie kann ich dies beheben? Vielleicht sollte ich hinzufügen, ein byte padding zu byteArray vor dem anfügen Grenze?
Was ist die richtige Art von hinzufügen von Binär-Daten zu POST-Anforderung?
Bitte beachten Sie, dass mit Base64 Codierung das ist keine option hier.
[Bearbeiten]
Lösung zu nutzen, um die MultipartEntity auf solche Anfragen
und vergessen Sie über das hinzufügen von Grenzen manuell.
Hier ist der relevante code-snippet:
FileBody bin = new FileBody(new File(Environment.getExternalStorageDirectory() + "/" + FILE_NAME));
MultipartEntity entity = new MultipartEntity();
entity.addPart("message", new StringBody("A message that goes with request"));
entity.addPart("file", bin);
(Dritte Zeile muss innerhalb eines try/catch-block, aber ich entfernt es für die Lesbarkeit)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Denke ich, sollten Sie etwas verwenden wie den Apache HttpClient (oder vielleicht ist es in Ihren http-mime-Modul, ich habe nicht verwendet es selbst), das kann multipart-Postings. Sehen diese Frage, zum Beispiel. Binäre Daten wie ein JPEG ist nicht Charakter-Daten und sollten wirklich nicht in eine
String
.Habe ich noch nicht ausprobiert, aber vielleicht funktioniert