1. ホーム
  2. java

[解決済み] Retrofit 2 - URL クエリパラメータ

2023-05-17 17:07:40

質問

Google Maps APIで必要な値を設定するために、クエリパラメータを使用しています。

問題なのは & 記号が必要ないことです。

@GET("/maps/api/geocode/json?")
    Call<JsonObject> getLocationInfo(@Query("address") String zipCode,
                                             @Query("sensor") boolean sensor,
                                             @Query("client") String client,
                                             @Query("signature") String signature);

レトロフィットが生成されます。

&address=90210&sensor=false&client=gme-client&signature=signkey

である必要があるときに、呼び出しが失敗する原因となります。

address=90210&sensor=false&client=gme-client&signature=signkey

どうすれば直るのでしょうか?

どのように解決するのですか?

もし @GET("foobar?a=5") を指定した場合、すべての @Query("b") を追加する必要があります。 & を使って追加する必要があり、次のようなものが生成されます。 foobar?a=5&b=7 .

を指定した場合 @GET("foobar") を指定した場合、最初の @Query を使って追加する必要があります。 ? を使って追加する必要があり、次のようなものが生成されます。 foobar?b=7 .

これがRetrofitの仕組みです。

を指定すると @GET("foobar?") を指定すると、Retrofit はすでに何らかのクエリパラメータが指定されていると思い、その後に を追加します。 を使ってクエリパラメータを追加します。 & .

を削除して ? を削除すれば、望ましい結果が得られるでしょう。