如何在改型Android中随文件发送数据

如何在改型Android中随文件发送数据,android,retrofit,retrofit2,Android,Retrofit,Retrofit2,我正在用一个文件向服务器发送一些数据,下面是我的代码 val fileReqBody = pwdFile.asRequestBody("*/*".toMediaTypeOrNull()) val part = MultipartBody.Part.createFormData("pwdfile", pwdFile.name, fileReqBody) var registerDataService = RetrofitInstance.buildService(

我正在用一个文件向服务器发送一些数据,下面是我的代码

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")

            }

        })
val fileReqBody=pwdFile.asRequestBody(“*/*”.tomeditypernull())
val part=MultipartBody.part.createFormData(“pwdfile”,pwdfile.name,fileReqBody)
var registerDataService=instance.buildService(registerDataService::class.java)
var call:call=registerDataService.registerAccount(
用户名、电子邮件、名字、,
lastName,srpSyncPass,deviceId,
deviceType、deviceName、pubKey、part
)
排队(对象:Callback{
覆盖fun onResponse(调用:调用,响应:响应){
Log.v(“改装”,call.toString()+,“+response.body())
}
覆盖失效时的乐趣(调用:调用?、t:可丢弃?){
Log.v(“改装”、“呼叫失败”)
}
})
我的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>

}
接口注册数据服务{
@多部分
@POST(“用户/帐户/”)
fun registerAccount(@Part(“用户名”)用户名:字符串,
@部分(“电子邮件”)电子邮件:字符串,
@部分(“名字”)名字:字符串,
@零件(“lastname”)lastname:String,
@部分(“srppass”)srppass:字符串,
@部分(“设备ID”)设备ID:字符串,
@部分(“设备类型”)设备类型:Int,
@部分(“设备名称”)设备名称:字符串,
@部分(“pubkey”)pubkey:String,
@Part pwdFile:MultipartBody.Part):调用
}
我没有得到正确的结果

但邮递员的工作也很好 就像下面的截图

邮递员说,它工作得很好,有人能帮我哪里出了错吗


我用多部分发送的文件。

最后,我用下面的方法完成了

val requestUserName = userName.toRequestBody("multipart/form-data".toMediaTypeOrNull())
val requestEmail = email.toRequestBody("multipart/form-data".toMediaTypeOrNull())
val requestFirstName = firstName.toRequestBody("multipart/form-data".toMediaTypeOrNull())
val requestLastName = lastName.toRequestBody("multipart/form-data".toMediaTypeOrNull())
val requestSyncPass = srpSyncPass.toRequestBody("multipart/form-data".toMediaTypeOrNull())
val requestDeviceId = deviceId.toRequestBody("multipart/form-data".toMediaTypeOrNull())
val requestDeviceName = deviceName.toRequestBody("multipart/form-data".toMediaTypeOrNull())
val requestPubKey = pubKey.toRequestBody("multipart/form-data".toMediaTypeOrNull())
在RegisterDataService中

@Multipart
    @POST("user/account/")
    fun registerAccount(@Part("username") username: RequestBody,
                        @Part("email") email: RequestBody,
                        @Part("firstname") firstName: RequestBody,
                        @Part("lastname") lastName: RequestBody,
                        @Part("srppass") srppass: RequestBody,
                        @Part("deviceid") deviceId: RequestBody,
                        @Part("devicetype") deviceType: Int,
                        @Part("devicename") deviceName: RequestBody,
                        @Part("pubkey") pubKey: RequestBody,
                        @Part pwdFile: MultipartBody.Part): Call<Object>
@Multipart
@POST(“用户/帐户/”)
fun registerAccount(@Part(“用户名”)用户名:RequestBody,
@部分(“电子邮件”)电子邮件:请求主体,
@部分(“名字”)名字:RequestBody,
@零件(“lastname”)lastname:RequestBody,
@第部分(“SRPPAS”)SRPPAS:请求主体,
@部分(“deviceid”)deviceid:RequestBody,
@部分(“设备类型”)设备类型:Int,
@部分(“devicename”)devicename:RequestBody,
@部分(“pubkey”)pubkey:RequestBody,
@Part pwdFile:MultipartBody.Part):调用
现在它工作正常。

请使用以下命令:

 @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);
@Multipart
@POST(“api/events/”)
可观测事件后(
@部分(“名称”)请求主体名称,
@零件(“说明”)请求主体说明,
);
和请求机构,
RequestBody requestBodyName=RequestBody.create(文本,名称);
RequestBody requestBodyDescription=RequestBody.create(文本,描述);
那么,
返回apiService.postEvent(requestBodyName、requestBodyDescription);