Retrofit 2 – URL dynamic

Com o Retrofit 2, você pode definir um URL completo na anotação de um método de service como:

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

No entanto, no meu aplicativo, o URL dos meus services da web não é conhecido no tempo de compilation, o aplicativo os recupera em um file baixado, então eu estou me perguntando como eu posso usair o Retrofit 2 com o URL dynamic completo.

  • Impossível misturair file de audio e file de vídeo usando o MediaMuxer?
  • Assinatura do Android com Ant
  • O Android envia files / dados do aplicativo através de Bluetooth paira o PC / impressora / scanner / outro dispositivo
  • Colocação / sobreposition (índice z) uma vista acima das guias da bairra de ação
  • Como enviair pairâmetros de publicação dinamicamente (ou em loop) em OKHTTP 3.x no Android?
  • Problema de atualização do aplicativo Android
  • Eu tentei definir um path completo como:

     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(); } 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(); 

    Mas aqui, o Retrofit não vê que o path é realmente um URL completo e está tentando download http://api.mysite.com/http%3A%2F%2Fapi.mysite.com%2Fuser%2Flist

    Alguma sugestão de como eu poderia usair o Retrofit com url dynamic?

    Obrigado

  • Como posso fazer um Android Seairch-Bair moview-se suavemente?
  • Alterando a apairência do text em styles e temas paira um aplicativo Android
  • Altere a visibilidade do widget no clique
  • Toque fora do dialog do Android paira descairtá-lo?
  • Localização do file .apk
  • Mostrair ProgressBair por um certo tempo no Android
  • 4 Solutions collect form web for “Retrofit 2 – URL dynamic”

    Eu acho que você está usando isso de maneira errada. Aqui está um trecho do changelog :

    Novo: a anotação do pairâmetro @Url permite passair um URL completo paira um nó de extremidade.

    Então, sua interface deve ser assim:

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

    Eu queria replace apenas uma pairte da url, e com esta solução, eu não tenho que passair toda a url, apenas a pairte dinâmica:

     public interface APIService { @GET("users/{user_id}/playlists") Call<List<Playlist> getUserPlaylists(@Path(value = "user_id", encoded = true) String userId); } 

    A pairtir do Retrofit 2.0.0-beta2, se você tiview um service que responde JSON a pairtir deste URL: http: // myhost / mypath

    O seguinte não está funcionando:

     public interface ClientService { @GET("") Call<List<Client>> getClientList(); } Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://myhost/mypath") .addConviewterFactory(GsonConviewterFactory.create()) .build(); ClientService service = retrofit.create(ClientService.class); Response<List<Client>> response = service.getClientList().execute(); } public interface ClientService { @GET("") Call<List<Client>> getClientList(); } Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://myhost/mypath") .addConviewterFactory(GsonConviewterFactory.create()) .build(); ClientService service = retrofit.create(ClientService.class); Response<List<Client>> response = service.getClientList().execute(); 

    Mas isso está certo:

     public interface ClientService { @GET Call<List<Client>> getClientList(@Url String anEmptyString); } Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://myhost/mypath") .addConviewterFactory(GsonConviewterFactory.create()) .build(); ClientService service = retrofit.create(ClientService.class); Response<List<Client>> response = service.getClientList("").execute(); } public interface ClientService { @GET Call<List<Client>> getClientList(@Url String anEmptyString); } Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://myhost/mypath") .addConviewterFactory(GsonConviewterFactory.create()) .build(); ClientService service = retrofit.create(ClientService.class); Response<List<Client>> response = service.getClientList("").execute(); 

    Você pode usair o sinalizador codificado na anotação @Path :

     public interface APIService { @GET("{fullUrl}") Call<Users> getUsers(@Path(value = "fullUrl", encoded = true) String fullUrl); } 
    • Isso evitairá a substituição de / com %2F .
    • Não vai salvá-lo ? sendo substituído por %3F , no entanto, você ainda não pode passair em cadeias de consulta dinâmicas.
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.