如何正确地将变量放入url中。改造2.0

时间:2018-04-28 10:59:13

标签: android kotlin retrofit retrofit2

我试图以这种方式放置id:

@Headers("Content-type: multipart/form-data")
@POST("/files/upload?dir=userIcons/{id}")
fun upload(@Query("id", encoded = true) id: String,
           @Body encodedImg: String) : Call<IconModel>

但我在更换时遇到错误。并且idk如何解决它。

以下是错误消息:

java.lang.IllegalArgumentException: URL query string "dir=userIcons/{id}" must not have replace block. For dynamic query parameters use @Query.

1 个答案:

答案 0 :(得分:0)

由于您无法在查询中设置替换块(无论您如何尝试替换它,使用@Path也不会使用它),这里有&#39; s改为做的方法。您可以从传递给@POST注释的路径中删除查询部分:

@Headers("Content-type: multipart/form-data")
@POST("/files/upload")
fun upload(@Query("dir", encoded = true) id: String,
           @Body encodedImg: String): Call<IconModel>

然后,当您调用API时,您必须传递query参数的整个值:

val call = api.upload("userIcons/foo", "bar")

这将导致这样的调用,我相信这是你想要的:

/files/upload?dir=userIcons/foo