属性值必须是Retrofit Api接口中的常量

时间:2018-06-10 21:38:38

标签: java android gradle retrofit

我正在尝试隐藏我的API密钥,因此我正在设置我的Retrofit Api界面:

public interface ApiInterface {
    @GET("?api_key=" + popularmovies.name.com.popularmovies.BuildConfig.TMD_API_KEY + "&language=en-US")
    Call<Movies> getImages();
}

但是,我收到错误&#34;属性值必须是常量。&#34;有没有办法解决和访问这个String?

更新:这是第二次尝试:

private static final String API_KEY = popularmovies.troychuinard.com.popularmovies.BuildConfig.TMD_API_KEY;


public interface ApiInterface {
    @GET("?language=en-US")
    Call<Movies> getImages(@Query("api_key") API_KEY);
}

更新:这是第三次尝试:

下面是我看到的作为发出请求的URL的日志记录,可以看出API Key现在位于URL的末尾,这是不正确的语法:

  

06-10 18:41:33.212 4969-4993 /? D / OkHttp:&lt; - 401 Unauthorized http://api.themoviedb.org/3/movie/popular?language=en-US&api_key=?api_key%3D09b0a9a9d5d9ddee2b3bc69e78b02457(592ms)       Access-Control-Allow-Origin:*

1 个答案:

答案 0 :(得分:2)

使用:

@GET("/rest/of/your/path/here?language=en-US")
Call<Movies> getImages(@Query("api_key") apiKey);

您将popularmovies.name.com.popularmovies.BuildConfig.TMD_API_KEY传递给getImages()

Call<Movies> call=yourRetrofitInterface.getImages(BuildConfig.TMD_API_KEY);

此外,您的@GET注释似乎缺少REST端点的路径(在我的示例中显示为/rest/of/your/path/here)。