2017-01-18 3 views
1

HTTP @GETのURL文字列に現在の日付を追加しようとしていますが、Attribute value must be constantエラーが発生しています。なぜ私は理解できませんか? @Selvinはすでにそれが原因で一定でdateではないのだコメントで指摘したように、私は改造2.なぜ属性値は一定のエラーでなければなりませんか?

public interface API { 

    final Date c = new Date(); 
    final String date=new SimpleDateFormat("yyyy-MM-dd").format(c); 

    static final String url = ("/modules/json/json/Index?costNumber=0417&firstDay="+date+"&language=fi"); 


    @GET(url) 
    Call<Menu> getMenuName(); 
+0

Javaの基礎を:なぜなら 'はurl'が一定でない – Selvin

+0

@Selvin作る' +日付+ 'プラス' data'が一定でないという事実...のいや私は知っているが、どのように私はURLに日付を得ることができますか?たとえば、日付が2017-01-18の場合、urlは/ modules/json/json/Indexですか?indexNumber = 0417&firstDay = 2017-01-18&language = fi – Nahka

+0

getMenuNameのパラメータを作成し、ドキュメントを読む方法 – Selvin

答えて

1

を使用しています。

@GET("/modules/json/json/Index") 
Call<Menu> getMenuName(
     @Query("costNumber") String costNumber, 
     @Query("firstDay") String firstDay, 
     @Query("language") String language); 

あなたは、適切なパラメータを持つメソッドを呼び出すことができます:

getMenuName("0417", date, "fi"); 

レトロフィットは、どのように知っているあなたにgetMenuNameを変更することができますので、このクエリパラメータ作る通常、あなたを改造使用

あなたのためのURLを構築する。これにより、別のcostNumberfirstDayの同じ呼び出しをハードコーディングされたURLよりもはるかに簡単に行うことができます。

0

Fredの回答があなたのケースに適した解決策です。ただし、Retrofit 2は完全な情報を得るために動的URLをサポートしています。次の例のように、あなたのインターフェイスメソッドへの@Url、それをパラメータとして渡すことができます。

@GET 
Call<ResponseBody> getMenuName(@Url String url); 

あなたは@GET注釈にURLを指定する必要はありません。更新は、渡されたurlから値を取ります。これにより、動的URLからデータを要求するオプションが提供されます。これは場合によっては有益です。

あなたはここでより多くの情報を見つけることができます:https://futurestud.io/tutorials/retrofit-2-how-to-use-dynamic-urls-for-requests

関連する問題