2016-05-12 6 views
0

を使用して、私はヤフーの天気APIを使用して、このリンクを使用して結果を取得しています:ヤフーの天気予報APIの

https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid%20in%20(select%20woeid%20from%20geo.places(1)%20where%20text%3D%22london%22)&format=json

今、私は後付けでこのURLを使用するようにしたいです。だから、質問を渡して街を変える方法を教えてください。

は、私がよく理解していれば、あなたはURLに指定された都市を含める方法を探しているあなたに

答えて

3

それはこのようなものになってしまうでしょうこのようなオブジェクトを作成します。

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

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

そして、このようにそれを実行します。

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

あなたはJSONと適切気象出力を解析するConverterFactoryを変更する必要があります。

私はこれを試していませんが、Retrofitクエリの使用方法を知っています。

3

ありがとうございます。これを行う方法のサンプルコードを次に示します。この例では、変数cityは任意の都市名を取ることができます。

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" 

更新:

、あなたは、このようなベースURLにクエリを連結できます。そして、

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

} 

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