headerMap, Pair>... queryParams) {
- Call call = buildGet(path, queryMap, queryParams);
+ Call call = buildGet(path, queryMap,headerMap, queryParams);
return execute(call);
}
diff --git a/admin4j-common-http/src/main/java/io/github/admin4j/http/core/HttpConfig.java b/admin4j-common-http/src/main/java/io/github/admin4j/http/core/HttpConfig.java
index 1c2bcaf..89c25a7 100644
--- a/admin4j-common-http/src/main/java/io/github/admin4j/http/core/HttpConfig.java
+++ b/admin4j-common-http/src/main/java/io/github/admin4j/http/core/HttpConfig.java
@@ -1,9 +1,11 @@
package io.github.admin4j.http.core;
import lombok.Data;
+import okhttp3.Protocol;
import okhttp3.logging.HttpLoggingInterceptor;
import java.net.Proxy;
+import java.util.List;
/**
* @author andanyang
@@ -53,9 +55,27 @@ public class HttpConfig {
* 是否共用连接池
*/
private boolean commonConnectionPool = true;
+
+ /**
+ * 代理配置
+ */
private ProxyConfig proxy;
+ /**
+ * 请求协议
+ * - HTTP_1_0: HTTP/1.0
+ * - HTTP_1_1: HTTP/1.1
+ * - HTTP_2: HTTP/2
+ *
+ * 按优先顺序排列。如果列表包含 Protocol.H2_PRIOR_KNOWLEDGE ,则该协议必须是唯一的协议,并且不支持 HTTPS URL。
+ * 否则,列表必须包含 Protocol. HTTP_1_1。该列表不得包含 null 或 Protocol. HTTP_1_0
+ */
+ private List protocols;
+
+ /**
+ * 代理配置
+ */
@Data
public static class ProxyConfig {
diff --git a/admin4j-common-http/src/main/java/io/github/admin4j/http/exception/HttpException.java b/admin4j-common-http/src/main/java/io/github/admin4j/http/exception/HttpException.java
index d5b7e3d..5361185 100644
--- a/admin4j-common-http/src/main/java/io/github/admin4j/http/exception/HttpException.java
+++ b/admin4j-common-http/src/main/java/io/github/admin4j/http/exception/HttpException.java
@@ -23,6 +23,10 @@ public HttpException(String message) {
super(message);
}
+ public HttpException(String message,Throwable throwable) {
+ super(message,throwable);
+ }
+
public HttpException(String message, int code) {
super(message);
this.code = code;
diff --git a/admin4j-common-http/src/main/java/io/github/admin4j/http/factory/HttpClientFactory.java b/admin4j-common-http/src/main/java/io/github/admin4j/http/factory/HttpClientFactory.java
index 247fcfa..dd3cda6 100644
--- a/admin4j-common-http/src/main/java/io/github/admin4j/http/factory/HttpClientFactory.java
+++ b/admin4j-common-http/src/main/java/io/github/admin4j/http/factory/HttpClientFactory.java
@@ -83,6 +83,12 @@ public static OkHttpClient okHttpClient(HttpConfig httpConfig, boolean commonCon
});
}
}
+
+ // http protocols
+ if (httpConfig.getProtocols() != null && !httpConfig.getProtocols().isEmpty()) {
+ builder.protocols(httpConfig.getProtocols());
+ }
+
return builder.build();
}
}
diff --git a/admin4j-common-http/src/main/java/io/github/admin4j/http/util/HttpJsonUtil.java b/admin4j-common-http/src/main/java/io/github/admin4j/http/util/HttpJsonUtil.java
index a95e561..9de95a9 100644
--- a/admin4j-common-http/src/main/java/io/github/admin4j/http/util/HttpJsonUtil.java
+++ b/admin4j-common-http/src/main/java/io/github/admin4j/http/util/HttpJsonUtil.java
@@ -54,50 +54,105 @@ public static JSONMapper get(String url, Map queryParams) {
return getHttpRequest().get(url, queryParams);
}
+ public static JSONMapper get(String url, Map queryParams, Map headerMap) {
+
+ return getHttpRequest().get(url, queryParams,headerMap);
+ }
+
public static T get(String url, Class tClass, Map queryParams) {
return getHttpRequest().get(url, queryParams, tClass);
}
+ /**
+ * 发送GET 请求
+ * @param url 地址
+ * @param tClass 需要JSON解析的model
+ * @param queryParams 查询参数
+ * @param headerMap header 参数
+ * @return 返回结果 model
+ * @param
+ */
+ public static T get(String url, Class tClass, Map queryParams, Map headerMap) {
+
+ return getHttpRequest().get(url, queryParams,headerMap, tClass);
+ }
+
public static JSONMapper post(String url, Object body) {
return getHttpRequest().post(url, body);
}
+ public static JSONMapper post(String url, Object body, Map headerParams) {
+ return getHttpRequest().post(url, body, headerParams);
+ }
+
public static T post(String url, Object body, Class tClass) {
return getHttpRequest().post(url, body, tClass);
}
+ public static T post(String url, Object body, Map headerParams, Class tClass) {
+ return getHttpRequest().post(url, body, headerParams, tClass);
+ }
+
public static JSONMapper postForm(String url, Map formParams) {
return getHttpRequest().postForm(url, formParams);
}
+ public static JSONMapper postForm(String url, Map formParams, Map headerParams) {
+ return getHttpRequest().postForm(url, formParams, headerParams);
+ }
+
public static T postForm(String url, Map formParams, Class tClass) {
return getHttpRequest().postForm(url, formParams, tClass);
}
+ public static T postForm(String url, Map formParams, Map headerParams, Class tClass) {
+ return getHttpRequest().postForm(url, formParams, headerParams, tClass);
+ }
+
//=================== Put =================
public static JSONMapper put(String url, Object body) {
return getHttpRequest().put(url, body);
}
+ public static JSONMapper put(String url, Object body, Map headerParams) {
+ return getHttpRequest().put(url, body, headerParams);
+ }
+
public static T put(String url, Object body, Class tClass) {
return getHttpRequest().put(url, body, tClass);
}
+ public static T put(String url, Object body, Map headerParams, Class tClass) {
+ return getHttpRequest().put(url, body, headerParams, tClass);
+ }
+
public static JSONMapper putForm(String url, Map formParams) {
return getHttpRequest().putForm(url, formParams);
}
+ public static JSONMapper putForm(String url, Map formParams, Map headerParams) {
+ return getHttpRequest().putForm(url, formParams, headerParams);
+ }
+
public static T putForm(String url, Map formParams, Class tClass) {
return getHttpRequest().putForm(url, formParams, tClass);
}
+ public static T putForm(String url, Map formParams, Map headerParams, Class tClass) {
+ return getHttpRequest().putForm(url, formParams, headerParams, tClass);
+ }
+
public static JSONMapper upload(String url, Map formParams) {
return getHttpRequest().postFormData(url, formParams);
}
+ public static JSONMapper upload(String url, Map formParams, Map headerParams) {
+ return getHttpRequest().postFormData(url, formParams, headerParams);
+ }
+
/**
* 使用 put 方法上传
*
@@ -109,6 +164,10 @@ public static JSONMapper uploadPut(String url, Map formParams) {
return getHttpRequest().putFormData(url, formParams);
}
+ public static JSONMapper uploadPut(String url, Map formParams, Map headerParams) {
+ return getHttpRequest().putFormData(url, formParams, headerParams);
+ }
+
// ============= delete =======
/**
@@ -125,6 +184,12 @@ public static JSONMapper delete(String url,
return getHttpRequest().delete(url, body, formParams);
}
+ public static JSONMapper delete(String url,
+ Object body,
+ Map formParams, Map headerParams) {
+ return getHttpRequest().delete(url, body, formParams, headerParams);
+ }
+
/**
* 删除
*
@@ -139,4 +204,10 @@ public static T delete(String url,
return getHttpRequest().delete(url, body, formParams, tClass);
}
+ public static T delete(String url,
+ Object body,
+ Map formParams, Map headerParams, Class tClass) {
+ return getHttpRequest().delete(url, body, formParams, headerParams, tClass);
+ }
+
}
diff --git a/admin4j-common-http/src/main/java/io/github/admin4j/http/util/HttpUtil.java b/admin4j-common-http/src/main/java/io/github/admin4j/http/util/HttpUtil.java
index 2dc0e53..fb1bb8c 100644
--- a/admin4j-common-http/src/main/java/io/github/admin4j/http/util/HttpUtil.java
+++ b/admin4j-common-http/src/main/java/io/github/admin4j/http/util/HttpUtil.java
@@ -1,10 +1,13 @@
package io.github.admin4j.http.util;
import io.github.admin4j.http.ApiClient;
+import io.github.admin4j.http.HttpRequest;
import io.github.admin4j.http.core.HttpDefaultConfig;
import io.github.admin4j.http.core.MediaTypeEnum;
import io.github.admin4j.http.core.Pair;
import lombok.Cleanup;
+import okhttp3.Call;
+import okhttp3.Callback;
import okhttp3.Response;
import org.apache.commons.lang3.StringUtils;
@@ -43,46 +46,198 @@ public static void setClient(ApiClient apiJsonClient) {
SINGLETON_REQUEST = apiJsonClient;
}
+ /**
+ * get 请求
+ *
+ * @param url
+ * @param queryParams 查询参数
+ * @return
+ */
public static Response get(String url, Pair>... queryParams) {
return getClient().get(url, (Map) null, queryParams);
}
+ /**
+ * get 请求
+ *
+ * @param url
+ * @param queryParams 查询参数
+ * @return
+ */
public static Response get(String url, Map queryParams) {
return getClient().get(url, queryParams, (Pair>[]) null);
}
+ /**
+ * post 请求
+ *
+ * @param url
+ * @param body post body 体
+ * @return
+ */
public static Response post(String url, Object body) {
return getClient().post(url, MediaTypeEnum.JSON, body, (Map) null, (Map) null);
}
+ /**
+ * post(application/json;) 请求
+ *
+ * @param url
+ * @param body post body 体
+ * @param header header 头
+ * @return
+ */
+ public static Response post(String url, Object body, Map header) {
+ return getClient().post(url, MediaTypeEnum.JSON, body, (Map) null, header);
+ }
+
+ /**
+ * form(x-www-form-urlencoded) 格式的 post 请求
+ *
+ * @param url
+ * @param formParams
+ * @return
+ */
public static Response postForm(String url, Map formParams) {
return getClient().post(url, MediaTypeEnum.FORM, null, formParams, (Map) null);
}
+ /**
+ * form(x-www-form-urlencoded) 格式的 post 请求
+ *
+ * @param url
+ * @param formParams
+ * @param header
+ * @return
+ */
+ public static Response postForm(String url, Map formParams, Map header) {
+ return getClient().post(url, MediaTypeEnum.FORM, null, formParams, header);
+ }
+
+ /**
+ * put 请求
+ *
+ * @param url
+ * @param body
+ * @return
+ */
public static Response put(String url, Object body) {
return getClient().put(url, MediaTypeEnum.JSON, body, (Map) null, (Map) null);
}
+ /**
+ * put 请求
+ *
+ * @param url
+ * @param body
+ * @param header
+ * @return
+ */
+ public static Response put(String url, Object body, Map header) {
+ return getClient().put(url, MediaTypeEnum.JSON, body, (Map) null, header);
+ }
+
+ /**
+ * form(x-www-form-urlencoded) 格式的 put 请求
+ *
+ * @param url
+ * @param formParams
+ * @return
+ */
public static Response putForm(String url, Map formParams) {
return getClient().put(url, MediaTypeEnum.FORM, null, formParams, (Map) null);
}
+ /**
+ * form(x-www-form-urlencoded) 格式的 put 请求
+ *
+ * @param url
+ * @param formParams
+ * @return
+ */
+ public static Response putForm(String url, Map formParams, Map header) {
+ return getClient().put(url, MediaTypeEnum.FORM, null, formParams, header);
+ }
+
+ /**
+ * delete 请求
+ *
+ * @param url
+ * @param body
+ * @return
+ */
public static Response delete(String url, Object body) {
return getClient().delete(url, MediaTypeEnum.JSON, body, (Map) null, (Map) null);
}
+ /**
+ * delete 请求
+ *
+ * @param url
+ * @param body
+ * @return
+ */
+ public static Response delete(String url, Object body, Map header) {
+ return getClient().delete(url, MediaTypeEnum.JSON, body, (Map) null, header);
+ }
+
+ /**
+ * form(x-www-form-urlencoded) 格式的 delete 请求
+ *
+ * @param url
+ * @param formParams
+ * @return
+ */
public static Response deleteForm(String url, Map formParams) {
return getClient().delete(url, MediaTypeEnum.FORM, null, formParams, (Map) null);
}
+ /**
+ * form(x-www-form-urlencoded) 格式的 delete 请求
+ *
+ * @param url
+ * @param formParams
+ * @return
+ */
+ public static Response deleteForm(String url, Map formParams, Map header) {
+ return getClient().delete(url, MediaTypeEnum.FORM, null, formParams, header);
+ }
+
+ /**
+ * form-data(multipart/form-data) 格式的 post 请求
+ *
+ * @param url
+ * @param formParams
+ * @return
+ */
+ public static Response postFormData(String url, Map formParams) {
+ return getClient().post(url, MediaTypeEnum.FORM_DATA, null, formParams, (Map) null);
+ }
+
+ public static Response postFormData(String url, Map formParams, Map header) {
+ return getClient().post(url, MediaTypeEnum.FORM_DATA, null, formParams, header);
+ }
+
+
+ /**
+ * form-data(multipart/form-data) 格式的 post 请求
+ *
+ * @param url
+ * @param formParams
+ * @return
+ */
public static Response upload(String url, Map formParams) {
return getClient().post(url, MediaTypeEnum.FORM_DATA, null, formParams, (Map) null);
}
+ public static Response upload(String url, Map formParams, Map header) {
+ return getClient().post(url, MediaTypeEnum.FORM_DATA, null, formParams, header);
+ }
+
public static InputStream down(String url) {
return getClient().down(url);
@@ -114,4 +269,29 @@ public static void down(String url, String savePath) throws IOException {
fileOutputStream.write(b);
}
}
+
+ //============= 发送http 请求 =================
+ public static Response send(HttpRequest httpRequest) {
+ ApiClient apiClient = HttpUtil.getClient();
+ Call call = apiClient.buildCall(httpRequest.getUrl(), httpRequest.getMethod(), httpRequest.getMediaType(),
+ httpRequest.getQueryParams(), httpRequest.getQueryMap(), httpRequest.getBody(), httpRequest.getForm(),
+ httpRequest.getHeaders());
+ return apiClient.execute(call);
+ }
+
+
+ /**
+ * 异步执行
+ *
+ * @param httpRequest
+ * @param callback
+ */
+ public static void asyncExecute(HttpRequest httpRequest, Callback callback) {
+
+ ApiClient apiClient = HttpUtil.getClient();
+ Call call = apiClient.buildCall(httpRequest.getUrl(), httpRequest.getMethod(), httpRequest.getMediaType(),
+ httpRequest.getQueryParams(), httpRequest.getQueryMap(), httpRequest.getBody(), httpRequest.getForm(),
+ httpRequest.getHeaders());
+ apiClient.executeAsync(call, callback);
+ }
}
diff --git a/admin4j-common-http/src/test/java/http/ApiClientTest.java b/admin4j-common-http/src/test/java/http/ApiClientTest.java
index 0412d3c..8419fe0 100644
--- a/admin4j-common-http/src/test/java/http/ApiClientTest.java
+++ b/admin4j-common-http/src/test/java/http/ApiClientTest.java
@@ -6,6 +6,7 @@
import io.github.admin4j.http.core.HttpConfig;
import io.github.admin4j.http.core.Method;
import io.github.admin4j.http.core.Pair;
+import io.github.admin4j.http.exception.HttpException;
import io.github.admin4j.http.util.HttpJsonUtil;
import io.github.admin4j.http.util.HttpUtil;
import lombok.SneakyThrows;
@@ -117,5 +118,21 @@ void upload() throws IOException {
System.out.println(xx);
}
-
+ @Test
+ void postFormError() {
+
+ try {
+ Map formParams = new HashMap<>(16);
+ formParams.put("username", "admin");
+ formParams.put("password", "admin123");
+ httpRequest.postForm("https://uatservice-etax.one.th/etaxbatchweb/etaxsignbatc",
+ formParams
+ );
+ //System.out.println("post = " + object);
+ }catch (HttpException e){
+ System.out.println("e = " + e.getMessage());
+ e.printStackTrace();
+ }
+
+ }
}
\ No newline at end of file
diff --git a/admin4j-common-http/src/test/java/http/ApiJsonClientTest.java b/admin4j-common-http/src/test/java/http/ApiJsonClientTest.java
index 6a01918..98ee377 100644
--- a/admin4j-common-http/src/test/java/http/ApiJsonClientTest.java
+++ b/admin4j-common-http/src/test/java/http/ApiJsonClientTest.java
@@ -4,11 +4,15 @@
import http.entity.R;
import io.github.admin4j.http.ApiJsonClient;
import io.github.admin4j.http.core.HttpConfig;
+import io.github.admin4j.http.exception.HttpException;
+import io.github.admin4j.http.util.HttpJsonUtil;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.io.IOException;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
/**
* @author andanyang
@@ -62,4 +66,22 @@ void getListObject() throws IOException {
}
+ @Test
+ void postFormError() {
+
+ try {
+ Map formParams = new HashMap<>(16);
+ formParams.put("username", "admin");
+ formParams.put("password", "admin123");
+ JSONMapper object = httpRequest.postForm("https://uatservice-etax.one.th/etaxbatchweb/etaxsignbatc",
+ formParams
+ );
+ System.out.println("post = " + object);
+ }catch (HttpException e){
+ System.out.println("e = " + e);
+ e.printStackTrace();
+ }
+
+ }
+
}
\ No newline at end of file
diff --git a/admin4j-common-http/src/test/java/http/TestProxy.java b/admin4j-common-http/src/test/java/http/TestProxy.java
index 7bf1bce..a06bc2f 100644
--- a/admin4j-common-http/src/test/java/http/TestProxy.java
+++ b/admin4j-common-http/src/test/java/http/TestProxy.java
@@ -23,22 +23,22 @@ void getStr() throws IOException {
HttpConfig httpConfig = new HttpConfig();
HttpConfig.ProxyConfig proxyConfig = new HttpConfig.ProxyConfig();
- proxyConfig.setHost("119.8.115.201");
- proxyConfig.setPort(9892);
- proxyConfig.setUserName("ces");
- proxyConfig.setPassword("iIl1o0O");
+ proxyConfig.setHost("192.168.0.1");
+ proxyConfig.setPort(9898);
+ proxyConfig.setUserName("ces_order");
+ proxyConfig.setPassword("23451Order");
httpConfig.setProxy(proxyConfig);
OkHttpClient okHttpClient = HttpClientFactory.okHttpClient(httpConfig);
ApiJsonClient apiClient = new ApiJsonClient(httpConfig);
// apiClient.setUserAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36");
- //JSONObject jsonObject = apiClient.get("https://2022.ip138.com/");
+ // JSONObject jsonObject = apiClient.get("https://2022.ip138.com/");
Map formParams = new HashMap<>(16);
formParams.put("username", "admin");
formParams.put("password", "admin123");
- JSONMapper object = apiClient.postForm("https://www.baidu.com/?/auth/login",
+ JSONMapper object = apiClient.get("https://api.onbuy.com/v2/auth/request-token",
formParams
);
System.out.println("post = " + object);
diff --git a/admin4j-common-http/src/test/java/io/github/admin4j/http/HttpRequestTest.java b/admin4j-common-http/src/test/java/io/github/admin4j/http/HttpRequestTest.java
index c427074..6b7dd26 100644
--- a/admin4j-common-http/src/test/java/io/github/admin4j/http/HttpRequestTest.java
+++ b/admin4j-common-http/src/test/java/io/github/admin4j/http/HttpRequestTest.java
@@ -1,6 +1,7 @@
package io.github.admin4j.http;
import io.github.admin4j.http.core.HttpHeaderKey;
+import io.github.admin4j.http.exception.HttpException;
import okhttp3.Response;
import org.junit.jupiter.api.Test;
@@ -21,7 +22,7 @@ void get() {
@Test
void post() {
- Response response = HttpRequest.get("http://192.168.1.13:9100/auth/login")
+ Response response = HttpRequest.get("https://uatservice-etax.one.th/etaxbatchweb/etaxsignbatch")
.queryMap("q", "admin4j")
.header(HttpHeaderKey.USER_AGENT, "admin4j")
.form("username", "admin")
@@ -29,4 +30,22 @@ void post() {
.execute();
System.out.println("response = " + response);
}
+
+ @Test
+ void postError() {
+
+ //模拟http 404 异常
+ try{
+ Response response = HttpRequest.get("https://uatservice-etax.one.th/etaxbatchweb/etaxsignbatch")
+ .queryMap("q", "admin4j")
+ .header(HttpHeaderKey.USER_AGENT, "admin4j")
+ .form("username", "admin")
+ .form("password", "admin123")
+ .execute();
+ System.out.println("response = " + response);
+ }catch(HttpException e){
+ System.out.println("e = " + e);
+ }
+
+ }
}
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 26d7ef1..2de3248 100644
--- a/pom.xml
+++ b/pom.xml
@@ -18,7 +18,7 @@
UTF-8
1.8
- 0.8.0
+ 0.9.5
@@ -103,18 +103,18 @@
-
-
- ${repository.releases.id}
- nexus-releases
- ${repository.releases.url}
-
-
- ${repository.releases.id}
- nexus-snapshot
- ${repository.snapshots.url}
-
-
+
+
+
+
+
+
+
+
+
+
+
+
@@ -122,13 +122,6 @@
false
-
- ossrh
- https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/
-
- https://s01.oss.sonatype.org/content/repositories/snapshots
-
-
@@ -193,17 +186,17 @@
- org.sonatype.plugins
- nexus-staging-maven-plugin
- 1.6.13
+ org.sonatype.central
+ central-publishing-maven-plugin
+ 0.7.0
true
- ossrh
- https://s01.oss.sonatype.org/
- true
- true
+ ossrh
+ true
+ published
+
org.apache.maven.plugins
maven-gpg-plugin