2017-01-07 7 views
0

改造2を使用して天気アプリを作成しようとしていますが、今度は正しく呼び出しを設定するために苦労します。ここで 改造パラメータを正しく設定するには

が働いているURLです:だから

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

を、私は私のAPIキーとBASEのURLを持っている:http://api.openweathermap.org。これは私のレトロフィットサービスのメソッドです:

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

そして私が得るエラーは次のとおりです:

java.lang.IllegalArgumentException:URLクエリ文字列 "q = {city}/& APPID = {api}"はブロックを置き換えてはいけません。動的クエリパラメータの場合は@Queryを使用します。

は、だから私はこのように試してみました:

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

そして、私は同じエラーを取得...誰もが私のURLが間違って何、契約はここで何を知っていますか?あなたが唯一のパラメータ名は

答えて

3

は、このようにそれを実行します。 .IllegalArgumentException:Pathパラメータがクエリの後に来てはいけません。 ... Queryの後にPathが来ないのはなぜですか?
+0

私はこのエラーを取得しているか、それを伝える必要があります -

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

手動で入れレトロフィットの値をparamsはする必要はありません:java.langのを – joe

+0

申し訳ありませんが、私の間違い - あなたがリクエストしたクエリアノテーションのみが必要です。 '/ get/users/1/info'のようなリクエストの途中にパラメータを挿入する場合に使用されます - 1がidで、RetrofitでPath(" id "):'/get/users/{id}/info' –

+0

Riiight ... Tnx man! – joe

関連する問題