如何在改型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);