我需要向服务器发送 POST 请求。我应该传递一些参数和图像。我可以通过 Postman 执行此操作,但我无法使用 Fuel 在我的 Android 应用程序(最新的 SDK)上执行此操作。
这是我正在使用的代码:
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>()
我无权访问后端代码,只能访问一些日志。看起来请求正文是空的,文件也没有上传。我怎样才能做到这一点?我很茫然。
我还尝试将参数作为 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 传递,但仍然没有。
最佳答案
经过一番努力,我发现了可行的方法:
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
关于android - 如何使用 Fuel for Kotlin 发布多部分/表单数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54172694/