diff --git a/pom.xml b/pom.xml index d4e934f..e3d1ade 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.yhyzgn.http pigeon - 1.2.6 + 1.2.7 Pigeon Java http proxy. /~https://github.com/yhyzgn/Pigeon diff --git a/src/main/java/com/yhy/http/pigeon/Pigeon.java b/src/main/java/com/yhy/http/pigeon/Pigeon.java index 10ff22e..97f28c8 100644 --- a/src/main/java/com/yhy/http/pigeon/Pigeon.java +++ b/src/main/java/com/yhy/http/pigeon/Pigeon.java @@ -3,9 +3,10 @@ import com.yhy.http.pigeon.adapter.CallAdapter; import com.yhy.http.pigeon.converter.Converter; import com.yhy.http.pigeon.http.HttpMethod; -import com.yhy.http.pigeon.offer.GuavaCallAdapter; -import com.yhy.http.pigeon.offer.HttpLoggerInterceptor; -import com.yhy.http.pigeon.offer.JacksonConverter; +import com.yhy.http.pigeon.internal.GuavaCallAdapter; +import com.yhy.http.pigeon.internal.HeaderInterceptor; +import com.yhy.http.pigeon.internal.HttpLoggerInterceptor; +import com.yhy.http.pigeon.internal.JacksonConverter; import okhttp3.*; import javax.net.ssl.HostnameVerifier; @@ -37,7 +38,7 @@ public class Pigeon { private final HostnameVerifier sslHostnameVerifier; private final List netInterceptors; private final List interceptors; - private final Map headers; + private final Map headers; private final List callFactories; private final List converterFactories; private final OkHttpClient.Builder client; @@ -67,7 +68,7 @@ public List interceptors() { return interceptors; } - public Map headers() { + public Map headers() { return headers; } @@ -222,7 +223,7 @@ public static class Builder { private HttpUrl host; private final List netInterceptors = new ArrayList<>(); private final List interceptors = new ArrayList<>(); - private final Map headers = new HashMap<>(); + private final Map headers = new HashMap<>(); private final List adapterFactories = new ArrayList<>(); private final List converterFactories = new ArrayList<>(); private OkHttpClient.Builder client; @@ -252,7 +253,7 @@ public Builder netInterceptor(Interceptor interceptor) { return this; } - public Builder header(String name, Object value) { + public Builder header(String name, String value) { this.headers.put(name, value); return this; } @@ -302,6 +303,9 @@ public Pigeon build() { // 默认Adapter和Converter需要添加在最前面,后边需要从后往前查找 adapterFactories.add(0, new GuavaCallAdapter()); converterFactories.add(0, new JacksonConverter()); + + // 公共请求头拦截器 + netInterceptors.add(new HeaderInterceptor(headers)); if (logging) { netInterceptors.add(new HttpLoggerInterceptor()); } diff --git a/src/main/java/com/yhy/http/pigeon/offer/GsonConverter.java b/src/main/java/com/yhy/http/pigeon/internal/GsonConverter.java similarity index 99% rename from src/main/java/com/yhy/http/pigeon/offer/GsonConverter.java rename to src/main/java/com/yhy/http/pigeon/internal/GsonConverter.java index c838dd1..9695b79 100644 --- a/src/main/java/com/yhy/http/pigeon/offer/GsonConverter.java +++ b/src/main/java/com/yhy/http/pigeon/internal/GsonConverter.java @@ -1,4 +1,4 @@ -package com.yhy.http.pigeon.offer; +package com.yhy.http.pigeon.internal; import com.google.gson.Gson; import com.google.gson.JsonIOException; diff --git a/src/main/java/com/yhy/http/pigeon/offer/GuavaCallAdapter.java b/src/main/java/com/yhy/http/pigeon/internal/GuavaCallAdapter.java similarity index 99% rename from src/main/java/com/yhy/http/pigeon/offer/GuavaCallAdapter.java rename to src/main/java/com/yhy/http/pigeon/internal/GuavaCallAdapter.java index dadae90..8452396 100644 --- a/src/main/java/com/yhy/http/pigeon/offer/GuavaCallAdapter.java +++ b/src/main/java/com/yhy/http/pigeon/internal/GuavaCallAdapter.java @@ -1,4 +1,4 @@ -package com.yhy.http.pigeon.offer; +package com.yhy.http.pigeon.internal; import com.google.common.util.concurrent.AbstractFuture; import com.google.common.util.concurrent.ListenableFuture; diff --git a/src/main/java/com/yhy/http/pigeon/internal/HeaderInterceptor.java b/src/main/java/com/yhy/http/pigeon/internal/HeaderInterceptor.java new file mode 100644 index 0000000..a2897ce --- /dev/null +++ b/src/main/java/com/yhy/http/pigeon/internal/HeaderInterceptor.java @@ -0,0 +1,44 @@ +package com.yhy.http.pigeon.internal; + +import okhttp3.Headers; +import okhttp3.Interceptor; +import okhttp3.Request; +import okhttp3.Response; +import org.jetbrains.annotations.NotNull; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; +import java.util.Map; + +/** + * author : 颜洪毅 + * e-mail : yhyzgn@gmail.com + * time : 2020-08-29 19:40 + * version: 1.0.0 + * desc : 公共请求头专用拦截器 + */ +public class HeaderInterceptor implements Interceptor { + private final static Logger LOGGER = LoggerFactory.getLogger(HeaderInterceptor.class); + + private final Map headers; + + public HeaderInterceptor(Map headers) { + this.headers = headers; + } + + @NotNull + @Override + public Response intercept(@NotNull Chain chain) throws IOException { + Request original = chain.request(); + // 重建 request 并注入 全局请求头 + Headers.Builder builder = original.headers().newBuilder(); + headers.forEach((name, value) -> { + LOGGER.debug("Setting global request header: {} = {}", name, value); + builder.set(name, value); + }); + Request request = original.newBuilder().headers(builder.build()).build(); + // 继续请求 + return chain.proceed(request); + } +} diff --git a/src/main/java/com/yhy/http/pigeon/offer/HttpLoggerInterceptor.java b/src/main/java/com/yhy/http/pigeon/internal/HttpLoggerInterceptor.java similarity index 99% rename from src/main/java/com/yhy/http/pigeon/offer/HttpLoggerInterceptor.java rename to src/main/java/com/yhy/http/pigeon/internal/HttpLoggerInterceptor.java index c39d597..a0d0657 100644 --- a/src/main/java/com/yhy/http/pigeon/offer/HttpLoggerInterceptor.java +++ b/src/main/java/com/yhy/http/pigeon/internal/HttpLoggerInterceptor.java @@ -1,4 +1,4 @@ -package com.yhy.http.pigeon.offer; +package com.yhy.http.pigeon.internal; import com.yhy.http.pigeon.common.Invocation; import com.yhy.http.pigeon.common.SystemClock; diff --git a/src/main/java/com/yhy/http/pigeon/offer/JacksonConverter.java b/src/main/java/com/yhy/http/pigeon/internal/JacksonConverter.java similarity index 99% rename from src/main/java/com/yhy/http/pigeon/offer/JacksonConverter.java rename to src/main/java/com/yhy/http/pigeon/internal/JacksonConverter.java index 16f167c..969d9d0 100644 --- a/src/main/java/com/yhy/http/pigeon/offer/JacksonConverter.java +++ b/src/main/java/com/yhy/http/pigeon/internal/JacksonConverter.java @@ -1,4 +1,4 @@ -package com.yhy.http.pigeon.offer; +package com.yhy.http.pigeon.internal; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.DeserializationFeature; diff --git a/src/main/java/com/yhy/http/pigeon/offer/StringResponseConverter.java b/src/main/java/com/yhy/http/pigeon/internal/StringResponseConverter.java similarity index 96% rename from src/main/java/com/yhy/http/pigeon/offer/StringResponseConverter.java rename to src/main/java/com/yhy/http/pigeon/internal/StringResponseConverter.java index ebf4dba..5c05764 100644 --- a/src/main/java/com/yhy/http/pigeon/offer/StringResponseConverter.java +++ b/src/main/java/com/yhy/http/pigeon/internal/StringResponseConverter.java @@ -1,4 +1,4 @@ -package com.yhy.http.pigeon.offer; +package com.yhy.http.pigeon.internal; import com.yhy.http.pigeon.Pigeon; import com.yhy.http.pigeon.converter.Converter; diff --git a/src/test/java/pigeon/get/ApiTester.java b/src/test/java/pigeon/get/ApiTester.java index 3c55fc6..8c7fd47 100644 --- a/src/test/java/pigeon/get/ApiTester.java +++ b/src/test/java/pigeon/get/ApiTester.java @@ -1,8 +1,8 @@ package pigeon.get; import com.yhy.http.pigeon.Pigeon; -import com.yhy.http.pigeon.offer.StringResponseConverter; import pigeon.Rmt; +import pigeon.interceptor.TestInterceptor; import java.io.IOException; import java.util.HashMap; @@ -19,7 +19,7 @@ public class ApiTester { public static void main(String[] args) throws IOException { // Pigeon pigeon = new Pigeon.Builder().host("http://localhost:8080/dbs/test").addConverterFactory(new StringResponseConverter()).build(); - Pigeon pigeon = new Pigeon.Builder().host("https://t-tio.ybsjyyn.com/reporter/api/debug").build(); + Pigeon pigeon = new Pigeon.Builder().host("https://t-tio.ybsjyyn.com/reporter/api/debug").header("XX", "asdfasdf").build(); Api api = pigeon.create(Api.class); // String test = api.test(); diff --git a/src/test/java/pigeon/interceptor/TestInterceptor.java b/src/test/java/pigeon/interceptor/TestInterceptor.java index 2abdd3d..bf6fd9a 100644 --- a/src/test/java/pigeon/interceptor/TestInterceptor.java +++ b/src/test/java/pigeon/interceptor/TestInterceptor.java @@ -1,6 +1,6 @@ package pigeon.interceptor; -import com.yhy.http.pigeon.offer.HttpLoggerInterceptor; +import com.yhy.http.pigeon.internal.HttpLoggerInterceptor; import okhttp3.Interceptor; import okhttp3.Response; import org.jetbrains.annotations.NotNull; @@ -17,7 +17,7 @@ * desc : */ public class TestInterceptor implements Interceptor { - private final static Logger LOGGER = LoggerFactory.getLogger(HttpLoggerInterceptor.class); + private final static Logger LOGGER = LoggerFactory.getLogger(TestInterceptor.class); @NotNull @Override