У меня была эта проблема, это решение. Я ценю тебя .

я есть собственный класс запросов 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 и что означают его значения.


Что я должен отредактировать в этом коде, чтобы правильно получить арабские значения?

Должен ли я изменить тип содержимого во всех частях, или я могу сделать так, чтобы каждая часть имела свой тип содержимого?

Любая помощь плз?

Ответы на вопрос(0)

Ваш ответ на вопрос