【问题标题】:how to send post request for image with string in retrofit kotlin?如何在改造 kotlin 中发送带有字符串的图像的发布请求?
【发布时间】:2022-01-21 21:10:35
【问题描述】:

我正在向 node.js 服务器发送带有图像和用户的发布请求,但用户正文在节点服务器中显示为空。 节点服务器正在使用 multer 来解析文件。 这是我的 Api.kt 接口文件

@Multipart
    @POST("/user/upload_avatar")
    fun uploadAvatarImage(
        @Part image:MultipartBody.Part,
        @Part("user") user: RequestBody
    ):Call<UploadImageResponse>

MainActivity.kt 文件

val user:String = """{"_id":"61db06b6e488c5b13211111","username":"abcda"}"""
      val multipart =MultipartBody.Part.createFormData("file",file.name,avatar)

    
        ServiceBuilder.buildService(Api::class.java).uploadAvatarImage(
            multipart,
            RequestBody.create(MediaType.parse("application/json"), user)
        ).enqueue(object :Callback<UploadImageResponse>{
            override fun onResponse(
                call: Call<UploadImageResponse>,
                response: Response<UploadImageResponse>
            ) {
               
                Toast.makeText(this@UploadImages, "Image upload successfully", Toast.LENGTH_SHORT).show()
            }

            override fun onFailure(call: Call<UploadImageResponse>, t: Throwable) {
                Toast.makeText(this@UploadImages, "Wrong With Image", Toast.LENGTH_SHORT).show()
            }

        })

【问题讨论】:

    标签: android api kotlin retrofit multer


    【解决方案1】:

    首先为什么不呢,让您的生活更轻松,只需使用 ktor。使用 ktor,您也不必编写使用 Java Libaray 时必须编写的大量代码。

    使用示例:https://medium.com/@shrikantjagtap99/uploading-multipart-form-data-using-ktor-http-client-bc3e1c6c2ce8

    Kotlin 可以与 Java 互操作,但它们在工作方式上仍有很大差异。例如回调 ;)

    如果你还想使用改造:

    根据:POST Multipart Form Data using Retrofit 2.0 including image

    您也必须对图像使用 RequestBody。也许这能解决你的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-19
      • 2014-12-29
      • 2015-10-02
      • 1970-01-01
      • 2021-12-13
      • 1970-01-01
      • 2019-12-11
      • 2016-03-24
      相关资源
      最近更新 更多