Retrofit 中的 IllegalArgumentException / 不得有替换块

问题描述 投票:0回答:4

我有以下代码:

    @GET("api.php?company_name={name}")
    Call<Model> getRoms_center(@Query("name") String name);

根据官方文档,我必须使用@Query,并且我正在使用它,但我收到以下错误:

java.lang.IllegalArgumentException: URL query string "company_name={name}" must not have replace block. For dynamic query parameters use @Query.
android retrofit
4个回答
166
投票

你应该这样做:

@GET("api.php")
Call<Model> getRoms_center(@Query("company_name") String name);

38
投票

示例网址为:

http://service.com/movies/list?movie_lang=hindi

对于该 URL,您可以使用以下内容:

@GET("http://service.com/movies/list")
Single<JsonElement> getMovieList(@Query("movie_lang") String userLanguage);

2
投票

示例网址:https://api.pray.zone/v2/times/today.jsonlatitude=31.3952348&longitude=&elevation=2000&timeformat=1

要传递该 URL 的改造,您可以使用以下命令:

@GET("today.json")
Call<SalahMainResponse> getSalahTiming(
    @Query("latitude") double latitude,
    @Query("longitude") double longitude,
    @Query("elevation") int elevation,
    @Query("timeformat") int timeformat
);

0
投票

在 Kotlin 中你应该这样做:

示例 URL:https://codeforces.com/api/user.info?handles=maity_amit_2003

在 Kotlin 中通过 Retrofit:

interface CodeForcesAPIService {
   @GET("api/user.info?")
   fun getApiResponse(@Query("handles") uid:String): Call<CodeForcesModel>
 }
© www.soinside.com 2019 - 2024. All rights reserved.