2017-08-28 6 views
0

Ich habe eine benutzerdefinierte Json Request-Klasse, um mehrteilige Dateien zum Server dieser Klasse in einer Android-Anwendung hochladen, funktioniert es gut, wenn ich englische Wörter als Schlüssel und Werte hinzufügen (diese Schlüssel und Werte sind ein Teil), aber wenn ich eines benutze Arabisches Wort, schreibt unbekannte Wörter wie "D * F * 9".
Bevor ich diese Werte in ByteArrayOutputStream Objekt schreibe, funktioniert alles gut, und ich kann arabische Wörter sehen.
Dies ist der Body Content Type Verfahren für die alle
Wie man nicht-englische Wörter als Textteil zur mehrteiligen Anfrage in der vollen lib hinzufügt?

@Override 
public String getBodyContentType() { 
    return "multipart/form-data;charset=UTF-8;boundary=" + boundary; 
    //return "application/json; charset=UTF-8"; 
    //return "multipart/form-data; charset=UTF-8"; 
} 



Hier Klasse erhalten, ist die Build-Text Part Methode der Textteil

private void buildTextPart(DataOutputStream dataOutputStream, String parameterName, String parameterValue) throws IOException { 
    dataOutputStream.writeBytes(twoHyphens + boundary + lineEnd); 
    //dataOutputStream.writeBytes("Content-Disposition: form-data; name=\"" + parameterName + "\"" + lineEnd); 
    dataOutputStream.writeBytes("Content-Disposition: form-data; name=\"" + parameterName + "\"" + lineEnd); 
    dataOutputStream.writeBytes("Content-Type: text/plain; charset=UTF-8" + lineEnd); 
    //dataOutputStream.writeBytes("Content-Type: application/json; charset=UTF-8" + lineEnd); 
    Log.d("inside buildText", parameterName + " " + parameterValue); 
    dataOutputStream.writeBytes(lineEnd); 
    dataOutputStream.writeBytes(parameterValue + lineEnd); 
} 



Und hier zu konstruieren der Code, den ich verwendet habe, um diese Werte zu debuggen

// just for debugging 
     DataInputStream in = new DataInputStream(new ByteArrayInputStream (bos.toByteArray())); 
     Scanner scanner = new Scanner(in); 
     while (scanner.hasNext()){ 
      Log.d("scanner ", scanner.next()); 
     } 



Ich habe diese RFC document gelesen, aber ich kann nicht verstehen, was der Zweck von Content-Disposition und was ist seine Werte bedeuten.


Was soll ich in diesem Code bearbeiten, um die arabischen Werte korrekt zu erhalten?

Sollte ich den Inhaltstyp in allen Teilen ändern oder kann ich jedes Teil seinen Inhaltstyp haben lassen?

Irgendwelche Hilfe PLZ?

+0

'um mehrteilige Dateien zum Server hochzuladen'? Was ist eine mehrteilige Datei? – greenapps

+0

Der erste Teil hat ein Bild und ein anderer hat einige Schlüssel und Werte. –

+0

Eine Datei sieht so aus? Dont denke nicht. – greenapps

Antwort

0

Schließlich fand ich die Antwort, war das Problem in dieser Linie

dataOutputStream.writeBytes(parameterValue + lineEnd); 

So aktualisiert ich es

dataOutputStream.write(parameterValue.getBytes("utf-8")); 
dataOutputStream.writeBytes(lineEnd); 

alle un ASCII-Zeichen zu bekommen, und jetzt funktioniert es gut für alle Sprachen.

Verwandte Themen