How to add headers to OkHttp request interceptor?

前端 未结 10 1518
感情败类
感情败类 2020-12-01 00:24

I have this interceptor that i add to my OkHttp client:

public class RequestTokenInterceptor implements Interceptor {
@Override
public Response intercept(Cha         


        
10条回答
  •  失恋的感觉
    2020-12-01 01:12

    package com.example.network.interceptors;
    
    import androidx.annotation.NonNull;
    
    import java.io.IOException;
    import java.util.Map;
    
    import okhttp3.Interceptor;
    import okhttp3.Request;
    import okhttp3.Response;
    
    public class RequestHeadersNetworkInterceptor implements Interceptor {
    
        private final Map headers;
    
        public RequestHeadersNetworkInterceptor(@NonNull Map headers) {
            this.headers = headers;
        }
    
        @NonNull
        @Override
        public Response intercept(Chain chain) throws IOException {
            Request.Builder builder = chain.request().newBuilder();
            for (Map.Entry header : headers.entrySet()) {
                if (header.getKey() == null || header.getKey().trim().isEmpty()) {
                    continue;
                }
                if (header.getValue() == null || header.getValue().trim().isEmpty()) {
                    builder.removeHeader(header.getKey());
                } else {
                    builder.header(header.getKey(), header.getValue());
                }
            }
            return chain.proceed(builder.build());
        }
    
    }
    

    Example of usage:

    httpClientBuilder.networkInterceptors().add(new RequestHeadersNetworkInterceptor(new HashMap()
    {
        {
            put("User-Agent", getUserAgent());
            put("Accept", "application/json");
        }
    }));
    

提交回复
热议问题