如何在改造调用中设置 url 的静态结尾

Posted

技术标签:

【中文标题】如何在改造调用中设置 url 的静态结尾【英文标题】:How to setup the static end of the url in retrofit call 【发布时间】:2021-12-11 02:30:30 【问题描述】:

我有一个改造的api接口,但是如何根据参数正确设置它

@GET("/users/profile/User?age=Age&api_key=randomkey")
suspend fun enableVoice(
        @Path("User") user: String?,
        @Query("age") age: String?
): Response<UserResponse?>

我收到此错误,不知道如何正确设置 api 端

java.lang.IllegalArgumentException: URL query string "age=Age&amp;api_key=randomkey" must not have replace block. For dynamic query parameters use @Query.

请告诉我如何让它运行

【问题讨论】:

【参考方案1】:

根据this answer,我认为您需要这样做:

@GET("/users/profile/User")
suspend fun enableVoice(
        @Path("User") user: String?,
        @Query("age") age: String?,
        @Query("api_key") key: String?,
): Response<UserResponse?>

也可以使用@QueryMap,您可以在其中提供键值对的映射。

@GET("/users/profile/User")
suspend fun enableVoice(
        @Path("User") user: String?,
        @QueryMap queryParams: Map<String, String>
): Response<UserResponse?>

【讨论】:

【参考方案2】:

您无需在 URL 中显式添加查询部分。使用 @Query 注释在方法中传递它会自动将其添加到请求的最终 URL 中。所以你的要求应该是

@GET("/users/profile/User")
  suspend fun enableVoice(
    @Path("User") user: String?,
    @Query("age") age: String?,
    @Query("api_key") key: String?
  ): Response<UserResponse?>

【讨论】:

以上是关于如何在改造调用中设置 url 的静态结尾的主要内容,如果未能解决你的问题,请参考以下文章

如何在静态 UITableView 中设置 detailTextLabel.text?

37如何在函数中设置一个全局变量 ?

Android HttpUrlConnection如何在请求头中设置cookie?

如何在另一个应用程序域中设置静态布尔值?

如何通过函数在 C++ 中设置私有静态数组?

如何在 PyPI 中设置项目链接