Символы UTF-8 в «имени файла» для «Content-Disposition» дают «IllegalArgumentException: Unexpected char»JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Символы UTF-8 в «имени файла» для «Content-Disposition» дают «IllegalArgumentException: Unexpected char»

Сообщение Anonymous »

Можно ли отправить символ UTF-8 из клиента okhttp3?
Для следующей строки:

Код: Выделить всё

String fileName = "3$ Mù F'RANçé_33902_Country_5_202105";
String contentDisposition = "attachment;filename=" + "\"" +  fileName + "\"";
Я пробовал (для заголовка contentDisposition):

Код: Выделить всё

Headers headers = new Headers.Builder()
.addUnsafeNonAscii("Content-Disposition", contentDisposition)
.add("Authorization", bearer)
.add("Content-type", "application/octet-stream")
.build();
Request request = new Request.Builder()
.headers(headers)
.post(requestBody)
.url(urlAddress)
.build();
Но сервер получает: 3$ Mù F'RANçé_33902_Country_5_202105
Этот запрос отправлен фирме-партнеру, поэтому у меня нет доступа к серверной части.

Код: Выделить всё

application/octet-stream
необходим серверной части.
Тело создается следующим образом:

Код: Выделить всё

byte[] data = FileUtils.readFileToByteArray(file);
RequestBody requestBody = RequestBody.create(data);
Он прекрасно работает с Postman.
Полный MVCE (не может быть полным с информацией о файлах и серверной части, но в любом случае раньше он выходит из строя, поэтому вы можете просто запустить этот точный код, и он должен выдать ошибку):

Код: Выделить всё

public class App
{
public static void main( String[] args ) throws IOException
{
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/octet-stream");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
.url("xxxx")
.method("POST", body)
.addHeader("Content-Type", "application/octet-stream")
.addHeader("content-disposition", "attachment;filename=\"3$ Mù F'RANçé_33902_Country_5_202105.csv\"")
.addHeader("Authorization", "Bearer xxxxx")
.addHeader("Cookie", "xxxxxx")
.build();
Response response = client.newCall(request).execute();
}
}
Получена ошибка: java.lang.IllegalArgumentException: неожиданный символ 0xf9 в значении 25 в значении диспозиции содержимого: Attachment;filename="3$ Mù F'RANçé_33902_Country_5_202105.csv"< /p>
okhttp версия: 5.0.0-alpha.2
Я что-то пропустил?
Спасибо


Подробнее здесь: https://stackoverflow.com/questions/708 ... largumente
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Загрузка файла не имеет расширения файла с использованием Content-Disposition
    Anonymous » » в форуме Php
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Как установить заголовок Content-disposition в качестве вложения для части файла?
    Anonymous » » в форуме Python
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Имя файла Content-Disposition на китайском языке не поддерживается.
    Anonymous » » в форуме JAVA
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Имя файла Content-Disposition на китайском языке не поддерживается.
    Anonymous » » в форуме JAVA
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Как разрешить 'std :: __ cxx11 :: basic_ostringstream <char, std :: char_traits <char>, std :: allocator <char>> :: basi
    Anonymous » » в форуме C++
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»