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)

Schreibe einen Kommentar