簡體   English   中英

如何在 retrofit kotlin 中發送帶有字符串的圖像發布請求?

[英]how to send post request for image with string in retrofit kotlin?

我正在使用圖像和用戶向 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()
            }

        })

首先為什么不,讓你的生活更輕松,只需使用 ktor。 使用 ktor,您也不必編寫使用 Java Libaray 時必須編寫的大量代碼。

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

Kotlin 可與 Java 互操作,但它們在操作方式上仍有很大差異。 例如回調;)

如果還想使用 retrofit:

根據: POST Multipart Form Data using Retrofit 2.0 包括圖像

您也必須對圖像使用 RequestBody。 也許這可以解決你的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM