Search code examples
androidretrofitillegalargumentexception

Add dynamic value in url retrofit


I have this below URL

URL TO CALL

In the interface I have as

@GET("storage/presigned-url?bucketName=files&key=payment-receipt/{fileName}&httpVerb=2&contentType=image/jpeg")
suspend fun fileUploadPathCheque(@Path("fileName") name: String): Response<String>

I want to replace the file name with some value

I am calling the function as

Api.fileUploadPathCheque(UUID.randomUUID().toString().plus(".jpg"))

I get the following exception

ava.lang.IllegalArgumentException: URL query string "bucketName=files&key=payment-receipt/{fileName}&httpVerb=2&contentType=image/jpeg" must not have replace block. For dynamic query parameters use @Query.

What shoudl be correct way of doing this?


Solution

  • The exception is self-explanatory, You need to use a query parameter for key. Something like

    @GET("storage/presigned-url?bucketName=files&httpVerb=2&contentType=image/jpeg")
    suspend fun fileUploadPathCheque(@Query("key") name: String): Response<String>`
    

    and then call it appending payment-receipt/ to your passing parameter:

    Api.fileUploadPathCheque("payment-receipt/" + UUID.randomUUID().toString().plus(".jpg"))
    

    This should work for you.