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