首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用拦截器自定义重定向调用中的标头

使用拦截器自定义重定向调用中的标头
EN

Stack Overflow用户
提问于 2017-08-31 17:47:32
回答 1查看 1.4K关注 0票数 1

我试图使用阻断器添加一个头部时,使用重装。我想我已经用正确的方式创建了我的阻断器,但是我不知道该怎么称呼它,并将它与我的GET Retrofit方法连接起来。

这是我的阻断器:

代码语言:javascript
复制
public class HeaderInterceptor
            implements Interceptor {
        @Override
        public Response intercept(Chain chain)
                throws IOException {
            Request request = chain.request();
            request = request.newBuilder()
                    .addHeader(Constants.VersionHeader.NAME, Constants.VersionHeader.VALUE)
                    .addHeader("Authorization", "Bearer " + token)
                    .addHeader("Origin","MY URL")
                    .build();
            Response response = chain.proceed(request);
            return response;
        }
    }

这是我的界面:

代码语言:javascript
复制
public interface CategoryService {

    @GET("/v3/projects/{projectId}/categories/")
    Call<ArrayList<Category2>> getProjectCategories(@Path("projectId") String projectId);
}

考虑到我使用的是一个阻断器,我也有这个客户端,我不知道是否应该继续使用它:

代码语言:javascript
复制
public class CategoryClient {

    public static final String BASE_URL = "MY URL";
    private static Retrofit retrofit = null;


    public static Retrofit getClient() {
        if (retrofit==null) {
            retrofit = new Retrofit.Builder()
                    .baseUrl(BASE_URL)
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();
        }
        return retrofit;
    }
}

所以我有一个GET方法getProjectCategories,在这里我传递projectID,它返回内容。我想知道的是,如何使用Interceptor调用该方法并能够从请求中获得结果。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-31 19:43:09

我能够通过创建一个名为SendNetworkRequest的方法来解决我的问题,该方法将projectId作为参数发送,在这个类中,我创建了我的OkHttpClient、我的拦截器和我的改造构建器来处理我所需要的一切。

代码语言:javascript
复制
private void SendNetworkRequest(String projectID) {

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

        okhttpBuilder.addInterceptor(new Interceptor() {
            @Override
            public okhttp3.Response intercept(Chain chain) throws IOException {

                Request request = chain.request();

                Request.Builder newRequest = request.newBuilder().header("Authorization", "Bearer " + token);

                return chain.proceed(newRequest.build());
            }
        });

        Retrofit.Builder builder = new Retrofit.Builder()
                .baseUrl("MY URL")
                .client(okhttpBuilder.build())
                .addConverterFactory(GsonConverterFactory.create());

        Retrofit retrofit = builder.build();

        CategoryService category = retrofit.create(CategoryService.class);
        Call<ArrayList<Category2>> call = category.getProjectCategories(projectID, token);
        call.enqueue(new Callback<ArrayList<Category2>>() {
            @Override
            public void onResponse(Call<ArrayList<Category2>> call, Response<ArrayList<Category2>> response) {

                listCategories = response.body();
                listCategories.remove(response.body().size() - 1);
                if (response.body().size() > 0){
                    add_category_layout.setVisibility(View.VISIBLE);
                    layout_bar.setVisibility(View.VISIBLE);
                    message_body.setVisibility(View.INVISIBLE);
                    message_title.setVisibility(View.INVISIBLE);
                    edit_image.setVisibility(View.INVISIBLE);
                    adapter2 = new CategoryAdapter2(getApplicationContext(), listCategories);
                    recyclerView.setAdapter(adapter2);
                    recyclerView.setVisibility(View.VISIBLE);
                }
            }

            @Override
            public void onFailure(Call<ArrayList<Category2>> call, Throwable t) {
                // Log error here since request failed
                Log.e(TAG, t.toString());
            }
        });
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45987378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档