android - 在 Android Studio 中使用改造将 API key 放在哪里

标签 android retrofit

我正在使用来自 newsapi.org 的 api key 创建一个新闻应用程序 这是我使用教程创建的界面代码 https://www.learn2crack.com/2016/02/recyclerview-json-parsing.html.I我很困惑在这个界面中的语法和放置 api key 的位置。

公共(public)接口(interface)请求接口(interface){

@GET("android/jsonandroid")
Call<JSONResponse> getJSON();}

这是我的 MainActivity.java 代码

public class MainActivity extends AppCompatActivity {
    private RecyclerView recyclerView;
    private ArrayList<Article> data;
    private DataAdapter adapter;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initViews();
    }
    private void initViews(){
        recyclerView = (RecyclerView)findViewById(R.id.card_recycler_view);
        recyclerView.setHasFixedSize(true);
        RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getApplicationContext());
        recyclerView.setLayoutManager(layoutManager);
        loadJSON();
    }
    private void loadJSON(){
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("BASE_URL")
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        RequestInterface request = retrofit.create(RequestInterface.class);
        Call<JSONResponse> call = request.getJSON();
       call.enqueue(new Callback<JSONResponse>() {
           @Override
           public void onResponse(Call<JSONResponse> call, Response<JSONResponse> response) {
               JSONResponse jsonResponse = response.body();
               data = new ArrayList<>(Arrays.asList(jsonResponse.getAndroid()));
               adapter = new DataAdapter(data);
               recyclerView.setAdapter(adapter);
           }

           @Override
           public void onFailure(Call<JSONResponse> call, Throwable t) {
               Log.d("Error",t.getMessage());
           }
       });
    }
}

最佳答案

对一个请求使用@Headers:

@Headers("api-key: " + "PUT_YOUR_API_KEY")
@GET("android/jsonandroid")
Call<JSONResponse> getJSON();
}

并在 OkHttpClient.Builder 中为所有请求使用 addInterceptor:

OkHttpClient.Builder builder = new OkHttpClient.Builder();

builder.addInterceptor(new Interceptor() {
    @Override
    public Response intercept(Chain chain) throws IOException {
        Request request = chain.request().newBuilder().addHeader("api-key", "PUT_YOUR_API_KEY").build();
            return chain.proceed(request);
    }
});

关于android - 在 Android Studio 中使用改造将 API key 放在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49883204/

相关文章:

Android - 如何在 Robospice/retrofit 中获取 JSON 格式的请求和响应

android - MockWebServer 和 Retrofit with Callback

android - Retrofit execute方法是后台任务

android - Edittext 的常量后缀,即使在添加字符后也会存在

java - Android 如何获取手机是否从 sleep 模式恢复

安卓/谷歌分析 : How to get string from the EditText and send it to Google Analytics

android - 为什么 setAlpha() 在 RecyclerViews 中不起作用?

Android层列表安排

java - Android Retrofit : missing method body, 或声明抽象

android - 如何将自定义 header 添加到 retrofit 请求正文部分?