Как разместить multipart / form-data, используя Fuel для Kotlin? - PullRequest
0 голосов
/ 13 января 2019

Мне нужно отправить запрос POST на сервер. Я должен передать некоторые параметры и изображение. Я могу сделать это из Почтальона, но я не могу сделать это в своем приложении для Android (последний SDK), используя Fuel.

Это код, который я использую:

val formData = listOf("name" to "name")
val (_, _, result) = Fuel.upload("http://10.0.2.2:3000/test", parameters = formData)
                         .source { request, url -> imageFile } // type is File
                         .responseObject<CustomResponse>()

Это скриншот почтальона: enter image description here

У меня нет доступа к бэкэнд-коду, только некоторые журналы. Кажется, что тело запроса пустое, и файл также не загружается. Как я могу это сделать? Я в растерянности.

Я также попытался передать параметры в виде jsonBody, это передает тело, но тип содержимого не multipart / form-data, а изображение по-прежнему отсутствует.

Этот код JS работает :

let formData = new FormData();
formData.append('name', 'name');
formData.append('image', this.file);
axios.post(`${API_URL}/test`, formData, {
    headers: {
        'Content-Type': 'multipart/form-data'
    }
}).then(console.log).catch(console.log)

Редактировать: Я также попытался передать файл как DataPart, но ничего не получилось.

1 Ответ

0 голосов
/ 24 июня 2019

После некоторой борьбы я узнал, что будет работать:

val file = FileDataPart.from("path_to_your_file", name = "image")
val (_, _, result) = Fuel.upload("http://10.0.2.2:3000/test")
                 .add(file)
                 .responseObject<CustomResponse>()

В моем случае мне не понадобилась часть имени-имени, но я бы попытался добавить InlineDataPart

...