java - Retrofit Api 接口(interface)中的属性值必须是常量

标签 java android gradle retrofit

我试图隐藏我的 API key ,因此正在设置我的 Retrofit Api 接口(interface):

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

但是,我收到错误“属性值必须是常量”。有没有办法解析和访问这个字符串?

<小时/>

更新:这是第二次尝试:

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: <-- 401 Unauthorized http://api.themoviedb.org/3/movie/popular?language=en-US&api_key=?api_key%3D09b0a9a9d5d9ddee2b3bc69e78b02457 (592ms) Access-Control-Allow-Origin: *

最佳答案

用途:

@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) .

关于java - Retrofit Api 接口(interface)中的属性值必须是常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50788287/

相关文章:

spring - spring-framework v4.2.4.RELEASE测试在RepeatedSpringRunnerTests上失败

java - GWT GIN - 简单的用例失败(EventBus)

java - 获取用户输入,然后存储在 resultSet 列表中

android - 应用关闭后在 Android 中存储 ArrayList

Android - Wifi Direct/p2p 无法在 Android 8 上找到对等点

android - 我想在我的通知中添加一个大图标,但是当我运行应用程序时,大图标没有显示。下面是我的代码,有什么不对的地方吗?

scala - 在 Intellij 上运行测试 : Class not found

android - 无法在API级别29的wordpress应用中的webview中完全加载wordpress发布内容。但是在API级别26上可以正常工作

java - JUnit 5 @EnabledIfSystemProperty 无法按预期工作

java - Spring - 从 jar 文件使用/加载上下文文件