java - 我应该如何在我的 Android 应用程序的 REST API 代码中使用字符串?

标签 java android rest api okhttp

我正在构建一个使用 REST API 的 Android 应用程序。我正在使用 OkHttp,我访问的 API 需要一个 API key 。我认为最好的做法是将我的 API key 存储在我的 strings.xml 文件中。我还认为不包含 Android sdk 特定代码是最佳做法,现在我意识到这两种想法可能会相互冲突。

我正在使用 MVP 架构构建应用程序,在我的 NetModule 类中,我有一个方法 provideOkHttpClient(Cache),如下所示:

@Provides
@Singleton
OkHttpClient provideOkhttpClient (Cache cache){
    OkHttpClient.Builder client = new OkHttpClient.Builder();
    client.cache(cache);

    // Add GiantBomb.com api key to request
    client.addInterceptor(new Interceptor() {
        @Override
        public Response intercept(Chain chain) throws IOException {
            Request original = chain.request();
            HttpUrl originalHttpUrl = original.url();

            HttpUrl url = originalHttpUrl.newBuilder()
                    .addQueryParameter("apikey", MY_API_KEY)
                    .build();

            // Request customization: add request headers
            Request.Builder requestBuilder = original.newBuilder()
                    .url(url);

            Request request = requestBuilder.build();
            return chain.proceed(request);
        }
    });

    return client.build();
}

我从“添加查询参数”部分获得了拦截器代码 here

我想知道存储 API key 的最佳方式是什么。这个 key 永远不应该改变,因为我现在只为这个应用程序使用一个网站的 API,它将出现在所有请求中。我确实尝试将 API key 放在我的 strings.xml 中,但我没有可用于调用 getString() 的上下文。当然,我可以将 API key 存储在本地字符串中,但我不确定这是最好的方法。感谢您的帮助!

Here is the full NetModule.java class以防万一。在这里,我试图调用 getString 方法,但是没有上下文,我不确定我是否可以获得上下文。如果它还不是很明显,这是我第一次涉足 MVP,也是我在参加 Udacity 的开发 Android 应用程序类(class)后的第一个 Android 应用程序。

最佳答案

既然您已经在使用 Dagger,为什么不用它来将 API key 注入(inject)到您的 NetModule 类中呢?

关于java - 我应该如何在我的 Android 应用程序的 REST API 代码中使用字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42724998/

相关文章:

java - 从单个 XSLT 创建两个 XML 文件 (Java)

java - 执行器服务 : how to prevent thread starvation when synchronization barriers are done in the threads

android - 旋转线性布局后,onclick 事件在旋转后不会改变位置

java - Spring Data Rest 的 url 格式为/foo/{id}/bar

javascript - 如何在服务器离线时销毁仅 http cookie?

java - Handlebars if 方法返回 null/空字符串

java - 使用 Jersey + hibernate RESTful web 服务上传和下载图像

java - Android-HOG描述符距离

java - Android 无法访问更改系统设置权限

rest - 如何抑制来自 CLI CURL 的请求输出的 header