android - 如何在 Retrofit Android 中随文件一起发送数据
问题描述
我用一个文件向服务器发送一些数据,下面是我的代码
val fileReqBody = pwdFile.asRequestBody("*/*".toMediaTypeOrNull())
val part = MultipartBody.Part.createFormData("pwdfile", pwdFile.name, fileReqBody)
var registerDataService = RetrofitInstance.buildService(RegisterDataService::class.java)
var call: Call<Object> = registerDataService.registerAccount(
userName, email, firstName,
lastName, srpSyncPass, deviceId,
deviceType, deviceName, pubKey, part
)
call.enqueue(object : Callback<Object> {
override fun onResponse(call: Call<Object>, response: Response<Object>) {
Log.v("retrofit", call.toString() + ", " + response.body())
}
override fun onFailure(call: Call<Object>?, t: Throwable?) {
Log.v("retrofit", "call failed")
}
})
我的 RegisterDataService 代码如下
interface RegisterDataService {
@Multipart
@POST("user/account/")
fun registerAccount(@Part("username") username: String,
@Part("email") email: String,
@Part("firstname") firstName: String,
@Part("lastname") lastName: String,
@Part("srppass") srppass: String,
@Part("deviceid") deviceId: String,
@Part("devicetype") deviceType: Int,
@Part("devicename") deviceName: String,
@Part("pubkey") pubKey: String,
@Part pwdFile: MultipartBody.Part): Call<Object>
}
我没有得到正确的结果
但是邮递员的工作正常,如下图所示。
通过邮递员,它工作正常,有人可以帮助我在哪里做错了吗?
我用 Multipart 发送的文件。
解决方案
用这个:
@Multipart
@POST("api/events/")
Observable<Event> postEvent(
@Part("name") RequestBody name,
@Part("description") RequestBody description,
);
and request body,
RequestBody requestBodyName = RequestBody.create(text, name);
RequestBody requestBodyDescription = RequestBody.create(text, description);
then,
return apiService.postEvent(requestBodyName,requestBodyDescription);
推荐阅读
- ios - 为什么共享视频只发送到其他一些应用程序?
- android - 使用带有旋转的android中的画布创建一个有4个段的圆
- sql - 子查询会降低查询性能
- javascript - self.registration.getNotifications() 在 firebase-messaging-sw 中返回一个空数组
- java - 如何使用带参数的自定义注释查找 CDI bean?
- c++ - 在 C++ 中使用 D 和 E 表示法有什么区别?
- sqlite - 数据库中的目标行
- excel - 数据透视表 - 将付款合并为一个
- ffmpeg - 使用ffmpeg将两个通道转换为左或右的单个通道
- javascript - 单击提交按钮时如何更改数组的值而不清除之前所做的更改?