2016-05-12 15 views

Antwort

3

Es wäre so etwas wie dies am Ende als:

public interface WeatherService { 
    @GET("v1/public/yql") 
    Call<String> getWeather(@Query("q") String query); 

} 

Dann Erstellen Sie das Objekt wie folgt:

Retrofit retrofit = new Retrofit.Builder() 
      .baseUrl("https://query.yahooapis.com") 
      .addConverterFactory(ScalarsConverterFactory.create()) 
      .build(); 

     WeatherService wService = retrofit.create(WeatherService.class); 

Und es wie folgt aus:

String query = "select * from weather.forecast where woeid in (select woeid from geo.places(1) where text=\"Leeds\")&format=json"; 

Call<String> weather = wService.getWeather(query); 
     try { 
      Response<String> resp = weather.execute(); 

Sie sollten die ConverterFactory zu json ändern und richtig die Wetter Ausgabe analysieren.

Ich habe dies nicht getestet, nur eine Idee, wie Sie die Retrofit-Abfrage verwenden.

3

Wenn ich gut verstehen, werden Sie nach einem Weg suchen, um eine gegebene Stadt auf die URL enthält. Hier ist ein Beispielcode, wie es geht. Im Beispiel könnte die Variable Stadt einen beliebigen Stadtnamen annehmen.

var city = "london"; 
var query = "select%20*%20from%20weather.forecast%20where%20woeid%20in%20(select%20woeid%20from%20geo.places(1)%20where%20text%3D%22"+ city +"%22)&format=json" 

Update:

dann könnte man die Abfrage an die Basis-URL wie folgt verketten:

var baseurl = "https://query.yahooapis.com/v1/public/yql?q=" + query;