gpt4 book ai didi

android - 将 @Path 和 @Url 参数与 retrofit2 一起使用

转载 作者:行者123 更新时间:2023-11-29 17:20:22 24 4
gpt4 key购买 nike

我正在使用 retrofit2 与 webapi 进行通信。我需要动态设置 webapi 的 URL,因为用户可以更改它,所以我使用 @Url 注释来指定它,如下所示:

@POST
Call<LoginResponse> login(@Url String url, @Body LoginRequest user);

在其中一个操作中,我需要向服务器发送一些路径参数,所以我这样做:

@GET
Call<DataResponse> getOrder(@Url String url,
@Header(WEBAPI_EMAIL_HEDER) String email,
@Header(WEBAPI_TOKEN_ID_HEDER) String token,
@Path("id") int id);

当我调用操作 getOrder(...) 时,retrofit 引发异常,因为我不应该使用 @Url@Path 参数在同一操作中。

这是异常(exception)情况:

java.lang.IllegalArgumentException: @Path parameters may not be used with @Url. (parameter #4)

一种解决方案是替换 url 上的 id 参数,并在调用中仅使用 @Url 参数。但我认为这不是最好的方法,因为我将使用 @Path 参数对所有操作执行此操作。

还有其他更清洁的解决方案吗?也许使用另一个 retrofit2 注释?

提前致谢。

最佳答案

如帖子中所述 Retrofit 2 - Dynamic URL , @Url 表示法假定 String 是一个完全定义的 URL,并且不检查它是否包含 @Path 变量。

要使用 @Path 注释,您必须配置端点 URL 并在 @GET() 中包含 @Path 变量注释。

关于android - 将 @Path 和 @Url 参数与 retrofit2 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36876282/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com