我正在尝试将当前日期添加到HTTP @GET中的url String,但我收到Attribute value must be constant
错误。我无法理解为什么?我正在使用改造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 :(得分:2)
@Url
参数传递给接口方法,例如:
@GET
Call<ResponseBody> getMenuName(@Url String url);
您无需在@GET
注释中指定网址。 Retrofit将从传递的url
中获取值。这使您可以选择从动态URL请求数据,这在某些情况下很有用。
您可以在此处找到更多信息:https://futurestud.io/tutorials/retrofit-2-how-to-use-dynamic-urls-for-requests
答案 1 :(得分:1)
@Selvin已在评论中指出,因为date
不是常数。
使用改造通常会将其设为查询参数,因此您可以将getMenuName
更改为:
@GET("/modules/json/json/Index")
Call<Menu> getMenuName(
@Query("costNumber") String costNumber,
@Query("firstDay") String firstDay,
@Query("language") String language);
然后,您可以使用适当的参数调用该方法:
getMenuName("0417", date, "fi");
Retrofit将知道如何为您构建网址。请注意,与使用硬编码的网址相比,使用不同的costNumber
和firstDay
进行相同的调用也更容易。