kotlin 中的改造请求@Part 和@Query android
retrofit request @Part and @Query in kotlin android
我想在改造中将图像作为表单数据发送,将用户 ID 作为参数发送 android。enter image description here我尝试了很多解决方案,但没有取得任何成功。这是我的代码和 api.
@Multipart
@POST("upload/profile")
fun uploadProfilePhoto(@Part image: MultipartBody.Part, @Query("userId") userId: String): Call
val photoContent = RequestBody.create(MediaType.parse("image/*"), file)
val photo = MultipartBody.Part.createFormData("image", file.name, photoContent)
您必须检查 uploadProfilePhoto
函数 return 类型。
它应该是 Call 并且 T 应该定义。
如果仍然得到错误信息。显示更多。像 断点调试 或 postman
编辑
interface UploadImage{
@Multipart
@POST("upload/profile")
fun upload(@Query("userId") userId: String, @Part part:
MultipartBody.Part) : Call<LoginSignUpGeneralResponse>
}
val call = Retrofit.Builder().baseUrl(baseUrl)
.addConverterFactory(GsonConverterFactory.create())
.build()
.create(UploadImage::class.java)
.upload(userId,image)
call.enqueue(object : Callback<LoginSignUpGeneralResponse>{
override fun onResponse(//params){TODO()}
override fun onFailure(//params){TODO()}
})
我遇到了错误。实际上,当我们 post 多部分参数时,我们必须将我们的 formData 名称与 API 中的后端匹配。在我的例子中是“image/png”val photo = MultipartBody.Part.createFormData("image", file.name, photoContent)
像这样发送您的请求
val userId: RequestBody = userId.toRequestBody("multipart/formdata".toMediaTypeOrNull())
val image = file.asRequestBody("multipart/form-data".toMediaTypeOrNull())
val photo = MultipartBody.Part.createFormData("images", file.name, image)
使用此用户 ID 作为图片的请求正文和照片
@Multipart
@POST("upload/profile")
fun uploadProfilePhoto(
@Part image: MultipartBody.Part,
@Part("userId") userId: RequestBody
): Call<LoginSignUpGeneralResponse>
我想在改造中将图像作为表单数据发送,将用户 ID 作为参数发送 android。enter image description here我尝试了很多解决方案,但没有取得任何成功。这是我的代码和 api.
@Multipart @POST("upload/profile") fun uploadProfilePhoto(@Part image: MultipartBody.Part, @Query("userId") userId: String): Call
val photoContent = RequestBody.create(MediaType.parse("image/*"), file)
val photo = MultipartBody.Part.createFormData("image", file.name, photoContent)
您必须检查 uploadProfilePhoto
函数 return 类型。
它应该是 Call 并且 T 应该定义。
如果仍然得到错误信息。显示更多。像 断点调试 或 postman
编辑
interface UploadImage{
@Multipart
@POST("upload/profile")
fun upload(@Query("userId") userId: String, @Part part:
MultipartBody.Part) : Call<LoginSignUpGeneralResponse>
}
val call = Retrofit.Builder().baseUrl(baseUrl)
.addConverterFactory(GsonConverterFactory.create())
.build()
.create(UploadImage::class.java)
.upload(userId,image)
call.enqueue(object : Callback<LoginSignUpGeneralResponse>{
override fun onResponse(//params){TODO()}
override fun onFailure(//params){TODO()}
})
我遇到了错误。实际上,当我们 post 多部分参数时,我们必须将我们的 formData 名称与 API 中的后端匹配。在我的例子中是“image/png”val photo = MultipartBody.Part.createFormData("image", file.name, photoContent)
像这样发送您的请求
val userId: RequestBody = userId.toRequestBody("multipart/formdata".toMediaTypeOrNull())
val image = file.asRequestBody("multipart/form-data".toMediaTypeOrNull())
val photo = MultipartBody.Part.createFormData("images", file.name, image)
使用此用户 ID 作为图片的请求正文和照片
@Multipart
@POST("upload/profile")
fun uploadProfilePhoto(
@Part image: MultipartBody.Part,
@Part("userId") userId: RequestBody
): Call<LoginSignUpGeneralResponse>