2016-01-20 15 views
8

Nell'adattatore di retrofit ho utilizzato un Url di base per tutte le mie chiamate. so:Retrofit per Android: come ignorare baseUrl

Diciamo che quanto sopra è il mio codice, tutte le mie chiamate ora usano quella baseUrl. Ma per una chiamata in particolare, voglio cambiare l'url di base, non voglio creare un altro adattatore di riposo per questo, poiché è solo per testare localmente. Posso cambiare i punti finali dell'interfaccia probabilmente per non usare la baseurl, o c'è un'annotazione per fornire il mio URL di base?

risposta

19

è possibile utilizzare l'annotazione @Url per fornire l'URL completo completo. PER ESEMPIO.

@GET 
Call<GitHubUser> getUser(@Url String url); 
+0

sto usando 'com.squareup.retrofit: retrofit: 1.8.0' funzionerà, ora sta dicendo che non riesco a trovare quell'annotazione. non lo vedo nei documenti: http://static.javadoc.io/com.squareup.retrofit/retrofit/1.8.0/index.html?retrofit/http/package-tree.html – j2emanue

+1

no non lo farà. Penso che sia stato aggiunto con il retrofit 2. – Blackbelt

+0

Ricevo un'eccezione: java.lang.IllegalArgumentException: \ @Url non può essere utilizzato con l'URL \ @GET (parametro # 1) – sativa

4

In retrofi2 il percorso in @GET sovrascrive l'URL di base.

@GET("https://someurl/api/supermarkets") 
Observable<List<TechIndex>> getTechIndexList(); 

La richiesta verrà inviata a "someurl/api/.." indipendentemente dall'URL di base. Spero che aiuti

+0

questo è un buon punto, grazie – j2emanue