2017-01-07 3 views
0

J'essaie de créer l'application météo en utilisant Retrofit 2 et maintenant j'ai du mal à régler l'appel correctement.Comment régler les paramètres de retrofit correctement

est ici l'URL qui fonctionne:

http://api.openweathermap.org/data/2.5/weather?q=London&APPID=MY_API_KEY 

Alors, j'ai ma clé API et URL de base est: http://api.openweathermap.org .. Ceci est la méthode dans mon service Rénovation:

@GET("/data/2.5/weather?q={city}/&APPID={api}") 
    Observable<WeatherResponse> getWeather(@Path("city") String city, @Path("api") String api); 

Et l'erreur que je reçois est:

java.lang.IllegalArgumentException: URL chaîne de requête "q = {ville}/& APPID = {} api" ne doit pas avoir remplacer le bloc. Pour les paramètres de requête dynamiques, utilisez @Query.

J'ai donc essayé comme ceci:

@GET("/data/2.5/weather?{city}/&APPID={api}") 
Observable<WeatherResponse> getWeather(@Query("city") String city, @Path("api") String api); 

Et je reçois la même erreur ... Tout le monde sait ce qui est l'affaire ici, ce qui ne va pas avec mon URL?

Répondre

3

faire de cette façon:

@GET("/data/2.5/weather") 
Observable<WeatherResponse> getWeather(@Query("q") String city, @Query("APPID") String api);` 

Il n'y a pas besoin de mettre params manuellement les valeurs sur Retrofit - vous devez dire que ce sont des noms que des paramètres

+0

Maintenant, je reçois cette erreur: java.lang .IllegalArgumentException: un paramètre Path ne doit pas provenir d'une requête. ... Vous savez pourquoi le Chemin ne peut-il pas venir après Query? – joe

+0

Désolé, mon erreur - il devrait y avoir seulement des annotations de requête dans votre demande. Path est utilisé lorsque vous voulez insérer un paramètre au milieu de requêtes, par exemple un identifiant: '/ get/users/1/info' - il y a 1 id, et Retrofit sera utilisé Path (" id "):'/get/users/{id}/info' –

+0

Riiight ... Tnx homme! – joe