У меня была эта проблема, это решение. Я ценю тебя .
я есть собственный класс запросов json для загрузки файлов из нескольких частей на сервер этого класса в приложении Android, он прекрасно работает, когда я добавляю английские слова в качестве ключей и значений (эти ключи и значения являются одной частью), но когда я использую любое арабское слово , он пишет неизвестные слова, такие как "'D * F * 9".
Прежде чем я записываю эти значения в объект ByteArrayOutputStream, все работает нормально, и я вижу арабские слова.
Это метод get Body Content Type для всего класса
@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";
}
Вот метод сборки Text Part для построения текстовой части
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);
}
И вот код, который я использовал для отладки этих значений
// just for debugging
DataInputStream in = new DataInputStream(new ByteArrayInputStream (bos.toByteArray()));
Scanner scanner = new Scanner(in);
while (scanner.hasNext()){
Log.d("scanner ", scanner.next());
}
Я прочитал этоRFC документ но я не могу понять, какова цель Content-Disposition и что означают его значения.
Что я должен отредактировать в этом коде, чтобы правильно получить арабские значения?
Должен ли я изменить тип содержимого во всех частях, или я могу сделать так, чтобы каждая часть имела свой тип содержимого?
Любая помощь плз?