gpt4 book ai didi

android - 在 Android Retrofit 库中将值传递给 URL 之间的区别

转载 作者:太空宇宙 更新时间:2023-11-03 12:28:35 26 4
gpt4 key购买 nike

我在 Android Retrofit 库中尝试了两种类型的值传递给 URL,方法 1 执行时没有任何错误,但方法 2 抛出错误。

我通过查询键名称发送参数值,方法 1 中带有注释参数的值,方法 2 中 API 端点的变量替换

方法2抛出的错误:

java.lang.IllegalArgumentException: URL query string "appid={apikey}&lat={lat}&lon={lon}&units={units}" must not have replace block. For dynamic query parameters use @Query.

我的网址:data/2.5/weather?lat=77.603287&lon=12.97623&appid=f5138&units=metric

方法一:(执行良好)

@GET("data/2.5/weather")
Call<Weather> getWeatherReport(@Query("lat") String lat,
@Query("lon") String lng,
@Query("appid") String appid,
@Query("units") String units);

方法二:(错误)

@GET("data/2.5/weather?appid={apikey}&lat={lat}&lon={lon}&units={units}")
Call<Weather> getWeatherReport1(@Query("apikey") String apikey,
@Query("lat") String lat,
@Query("lon") String lng,
@Query("units") String units);

@Path 和第二种方法我都试过了。

我的问题是1.这两种方法有什么区别?2.为什么第二种方法不行?

最佳答案

第二种方法行不通,因为

URL query string must not have replace block. For dynamic query parameters use @Query

因此,在这种情况下使用@Path 注释也是行不通的。您可以像第一种方法一样使用@Query 批注动态分配查询参数。您可以使用 @Path 注释动态地仅应用 Path 参数,例如

@GET("data/{version}/")
Call<Weather> getWeatherReport1(@Path("version") String version);

关于android - 在 Android Retrofit 库中将值传递给 URL 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41144738/

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