1. ホーム
  2. アンドロイド

[解決済み】Retrofit 2 - ダイナミックURL

2022-04-17 08:31:28

質問

Retrofit 2では、サービスメソッドのアノテーションにフルURLを設定することができます。

public interface APIService {
  @GET("http://api.mysite.com/user/list")
  Call<Users> getUsers();
}

しかし、私のアプリでは、ウェブサービスのURLはコンパイル時にはわからず、アプリはダウンロードしたファイルからそれらを取得するため、完全な動的URLでRetrofit 2を使用するにはどうしたらよいか悩んでいます。

のようなフルパスを設定しようとしました。

public interface APIService {
  @GET("{fullUrl}")
  Call<Users> getUsers(@Path("fullUrl") fullUrl);
}

new Retrofit.Builder()
  .baseUrl("http://api.mysite.com/")
  .build()
  .create(APIService.class)
  .getUsers("http://api.mysite.com/user/list"); // this url should be dynamic
  .execute();

しかし、ここではRetrofitはパスが実際には完全なURLであることに気づかず、ダウンロードを試みています。 http://api.mysite.com/http%3A%2F%2Fapi.mysite.com%2Fuser%2Flist

このような動的なURLでRetrofitを使用する方法について何かヒントがあれば教えてください。

ありがとうございます。

解決方法は?

使い方が間違っているのでは?以下は チェンジログ :

新しい。URL パラメータアノテーションは、エンドポイントに完全な URL を渡すことを可能にします。

つまり、インターフェイスはこのようになるはずです。

public interface APIService {
    @GET
    Call<Users> getUsers(@Url String url);
}