2016-08-03 30 views
0

Ich versuche, eine einfache Wetter App mit Retrofit-Bibliothek zu machen. Ich möchte, dass der Name der Stadt dynamisch ist. Das ist, was ich bisher getan habe:Dynamischen Wert an URL mit Hilfe von Retrofit übergeben

vollständige URL:

http://api.openweathermap.org/data/2.5/forecast/daily?q=dhaka&cnt=7&appid=1111 

Basis-URL:

http://api.openweathermap.org/ 

in der Haupttätigkeit

LinkedHashMap<String,String>data=new LinkedHashMap<>(); 
    data.put("q",targetCity); 
    data.put("cnt",Integer.toString(7)); 
    data.put("appid",getString(R.string.api_key)); 
    Call<WeatherResponse>weatherResponseCall=weatherServiceApi.getAllWeatherReport(data); 

und in meiner api-Schnittstelle:

@GET("data/2.5/forecast/daily?") 
Call<WeatherResponse>getAllWeatherReport(@QueryMap LinkedHashMap<String,String>data); 

Ich bekomme weder einen Fehler, noch irgendwelche Antwortdaten. Bitte helfen.

+0

Können Sie meine Antwort akzeptieren, wenn es Ihnen hilft? Danke :) – Jaythaking

Antwort

0

Sie sind nicht die Anruffunktion ausführt ...

WeatherResponse response = call.execute().body(); 

Wenn ich Sie wäre, würde ich versuchen, eine ResponseBody von okhttp mit kehrten die Daten zu erhalten. Dann können Sie unter Verwendung von response.string() sehen, was aus der Anfrage abgerufen wurde.

Oder loggt sein, die Körperdaten jedes Request/Response Sie diese Abfangjäger hinzufügen sollten, wenn Ihr Retrofit Objekt bauen:

OkHttpClient client = httpClient.addInterceptor(interceptor.setLevel(HttpLoggingInterceptor.Level.BODY)) 
     .build(); 
Retrofit retrofit = builder.client(client).build(); 
return retrofit.create(serviceClass);