Добавить файл в запрос, используя AsyncHttp - PullRequest
0 голосов
/ 17 сентября 2018

Я пытаюсь сделать сообщение для конечной точки и установить некоторые параметры формы и файл, используя AsyncHttp.

Вот код, который у меня есть:

httpClient.preparePost(url)
    .addHeader(HttpHeaders.AUTHORIZATION, authorizationToken)
    .addHeader(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE)
    .addFormParam("type", type)
    .addBodyPart(new ByteArrayPart("file", file.getBytes()))
    .execute()
    .get();

Сейчас я получаю 4xx, но если я делаю это с почтальоном, он работает, и я получаю 201.

Что я делаю не так?

1 Ответ

0 голосов
/ 17 сентября 2018

На мой взгляд, вам нужно использовать или json (без параметров формы и отправки файла или использовать multipart / form-data POST вместо json).

Итак, вы можете заменить:

.addHeader(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE)

на:

.addHeader(HttpHeaders.ACCEPT, MediaType.MULTIPART_FORM_DATA)

Или (если вам действительно нужен json) вы должны удалить .addFormParam("type", type) и использовать что-то вродеthis:

httpClient.preparePost(url)
    .addHeader(HttpHeaders.AUTHORIZATION, authorizationToken)
    .addHeader(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE)
    .setBody(jsonContent)
    .execute()
    .get();

Когда jsonContent является вашим содержимым json.Также см. Этот вопрос: Отправка файла и связанных данных в RESTful WebService предпочтительно в формате JSON .

...