From 6856b07dfae47811f64e5c6da59c97f94ec400c9 Mon Sep 17 00:00:00 2001 From: andanyang <1218853253@qq.com> Date: Mon, 27 Nov 2023 15:37:02 +0800 Subject: [PATCH 01/20] =?UTF-8?q?feat(HttpRequest):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=20public=20HttpRequest=20mediaType(MediaTypeEnum=20mediaType)?= =?UTF-8?q?=20=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- admin4j-common-http/src/test/java/http/TestProxy.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/admin4j-common-http/src/test/java/http/TestProxy.java b/admin4j-common-http/src/test/java/http/TestProxy.java index 666661c..a06bc2f 100644 --- a/admin4j-common-http/src/test/java/http/TestProxy.java +++ b/admin4j-common-http/src/test/java/http/TestProxy.java @@ -23,7 +23,7 @@ void getStr() throws IOException { HttpConfig httpConfig = new HttpConfig(); HttpConfig.ProxyConfig proxyConfig = new HttpConfig.ProxyConfig(); - proxyConfig.setHost("119.8.115.201"); + proxyConfig.setHost("192.168.0.1"); proxyConfig.setPort(9898); proxyConfig.setUserName("ces_order"); proxyConfig.setPassword("23451Order"); From 6608e2729ef50e3b6f3d33940a8b80e8db969702 Mon Sep 17 00:00:00 2001 From: andanyang <1218853253@qq.com> Date: Mon, 27 Nov 2023 16:00:37 +0800 Subject: [PATCH 02/20] =?UTF-8?q?feat(HttpUtil):=20HttpUtil=20=E5=B7=A5?= =?UTF-8?q?=E5=85=B7=E7=B1=BB=E6=B7=BB=E5=8A=A0header=20=E8=AF=B7=E6=B1=82?= =?UTF-8?q?header=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/github/admin4j/http/ApiJsonClient.java | 124 +++++++++++++++--- .../admin4j/http/util/HttpJsonUtil.java | 52 ++++++++ .../io/github/admin4j/http/util/HttpUtil.java | 28 ++++ pom.xml | 2 +- 4 files changed, 185 insertions(+), 21 deletions(-) diff --git a/admin4j-common-http/src/main/java/io/github/admin4j/http/ApiJsonClient.java b/admin4j-common-http/src/main/java/io/github/admin4j/http/ApiJsonClient.java index a23b86f..99be694 100644 --- a/admin4j-common-http/src/main/java/io/github/admin4j/http/ApiJsonClient.java +++ b/admin4j-common-http/src/main/java/io/github/admin4j/http/ApiJsonClient.java @@ -168,7 +168,7 @@ protected T handleFailResponse(Response response, Class tClass) { return null; } - //protected JSONObject serialize(Response response) { + // protected JSONObject serialize(Response response) { // ResponseBody body = response.body(); // if (body == null) { // throw new HttpException("response body is null"); @@ -181,7 +181,7 @@ protected T handleFailResponse(Response response, Class tClass) { // } //} - //protected JSONArray serializeList(Response response) { + // protected JSONArray serializeList(Response response) { // ResponseBody body = response.body(); // if (body == null) { // throw new HttpException("response body is null"); @@ -206,44 +206,61 @@ public T get(String path, Map queryMap, Class tClass) { } + public JSONMapper get(String path, Pair... queryParams) { + Response response = get(path, (Map) null, queryParams); + return handleResponse(response, JSONMapper.class); + } + + public JSONMapper get(String path, Map queryMap) { + Response response = get(path, queryMap, (Pair[]) null); + return handleResponse(response, JSONMapper.class); + } + + public List getList(String path, Class tClass, Pair... queryParams) { + Response response = get(path, (Map) null, queryParams); + + return (List) handleResponse(response, tClass, true); + } + + public List getList(String path, Map queryMap, Class tClass) { + Response response = get(path, queryMap, (Pair[]) null); + return (List) handleResponse(response, tClass, true); + } + public T postForm(String url, Map formParams, Class tClass) { Response response = post(url, MediaTypeEnum.FORM, null, formParams, null); return handleResponse(response, tClass); } - public T postFormData(String url, Map formParams, Class tClass) { + public T postForm(String url, Map formParams, Map headerParams, Class tClass) { - Response response = post(url, MediaTypeEnum.FORM_DATA, null, formParams, null); + Response response = post(url, MediaTypeEnum.FORM, null, formParams, headerParams); return handleResponse(response, tClass); } - public T post(String url, Object body, Class tClass) { + public T postFormData(String url, Map formParams, Class tClass) { - Response response = post(url, MediaTypeEnum.JSON, body, null, null); + Response response = post(url, MediaTypeEnum.FORM_DATA, null, formParams, null); return handleResponse(response, tClass); } + public T postFormData(String url, Map formParams, Map headerParams, Class tClass) { - public JSONMapper get(String path, Pair... queryParams) { - Response response = get(path, (Map) null, queryParams); - return handleResponse(response, JSONMapper.class); - } - - public JSONMapper get(String path, Map queryMap) { - Response response = get(path, queryMap, (Pair[]) null); - return handleResponse(response, JSONMapper.class); + Response response = post(url, MediaTypeEnum.FORM_DATA, null, formParams, headerParams); + return handleResponse(response, tClass); } - public List getList(String path, Class tClass, Pair... queryParams) { - Response response = get(path, (Map) null, queryParams); + public T post(String url, Object body, Class tClass) { - return (List) handleResponse(response, tClass, true); + Response response = post(url, MediaTypeEnum.JSON, body, null, null); + return handleResponse(response, tClass); } - public List getList(String path, Map queryMap, Class tClass) { - Response response = get(path, queryMap, (Pair[]) null); - return (List) handleResponse(response, tClass, true); + public T post(String url, Object body, Map headerParams, Class tClass) { + + Response response = post(url, MediaTypeEnum.JSON, body, null, headerParams); + return handleResponse(response, tClass); } @@ -253,48 +270,96 @@ public JSONMapper postForm(String url, Map formParams) { return handleResponse(response, JSONMapper.class); } + public JSONMapper postForm(String url, Map formParams, Map headerParams) { + + Response response = post(url, MediaTypeEnum.FORM, null, formParams, headerParams); + return handleResponse(response, JSONMapper.class); + } + public JSONMapper postFormData(String url, Map formParams) { Response response = post(url, MediaTypeEnum.FORM_DATA, null, formParams, null); return handleResponse(response, JSONMapper.class); } + public JSONMapper postFormData(String url, Map formParams, Map headerParams) { + + Response response = post(url, MediaTypeEnum.FORM_DATA, null, formParams, headerParams); + return handleResponse(response, JSONMapper.class); + } + public JSONMapper post(String url, Object body) { Response response = post(url, MediaTypeEnum.JSON, body, null, null); return handleResponse(response, JSONMapper.class); } + public JSONMapper post(String url, Object body, Map headerParams) { + + Response response = post(url, MediaTypeEnum.JSON, body, null, headerParams); + return handleResponse(response, JSONMapper.class); + } + public JSONMapper put(String url, Object body) { Response response = put(url, MediaTypeEnum.JSON, body, null, null); return handleResponse(response, JSONMapper.class); } + public JSONMapper put(String url, Object body, Map headerParams) { + + Response response = put(url, MediaTypeEnum.JSON, body, null, headerParams); + return handleResponse(response, JSONMapper.class); + } + public T put(String url, Object body, Class tClass) { Response response = put(url, MediaTypeEnum.JSON, body, null, null); return handleResponse(response, tClass); } + public T put(String url, Object body, Map headerParams, Class tClass) { + + Response response = put(url, MediaTypeEnum.JSON, body, null, headerParams); + return handleResponse(response, tClass); + } + public JSONMapper putForm(String url, Map formParams) { Response response = put(url, MediaTypeEnum.FORM, null, formParams, null); return handleResponse(response, JSONMapper.class); } + public JSONMapper putForm(String url, Map formParams, Map headerParams) { + + Response response = put(url, MediaTypeEnum.FORM, null, formParams, headerParams); + return handleResponse(response, JSONMapper.class); + } + public T putForm(String url, Map formParams, Class tClass) { Response response = put(url, MediaTypeEnum.FORM, null, formParams, null); return handleResponse(response, tClass); } + public T putForm(String url, Map formParams, Map headerParams, Class tClass) { + + Response response = put(url, MediaTypeEnum.FORM, null, formParams, headerParams); + return handleResponse(response, tClass); + } + public JSONMapper putFormData(String url, Map formParams) { Response response = put(url, MediaTypeEnum.FORM_DATA, null, formParams, null); return handleResponse(response, JSONMapper.class); } + public JSONMapper putFormData(String url, Map formParams, Map headerParams) { + + Response response = put(url, MediaTypeEnum.FORM_DATA, null, formParams, headerParams); + return handleResponse(response, JSONMapper.class); + } + public T delete(String url, Object body, Map formParams, @@ -304,6 +369,16 @@ public T delete(String url, return handleResponse(response, tClass); } + public T delete(String url, + Object body, + Map formParams, + Map headerParams, + Class tClass) { + + Response response = delete(url, body == null ? MediaTypeEnum.FORM : MediaTypeEnum.JSON, body, formParams, headerParams); + return handleResponse(response, tClass); + } + public JSONMapper delete(String url, Object body, Map formParams) { @@ -311,4 +386,13 @@ public JSONMapper delete(String url, Response response = delete(url, body == null ? MediaTypeEnum.FORM : MediaTypeEnum.JSON, body, formParams, (Map) null); return handleResponse(response, JSONMapper.class); } + + public JSONMapper delete(String url, + Object body, + Map formParams + , Map headerParams) { + + Response response = delete(url, body == null ? MediaTypeEnum.FORM : MediaTypeEnum.JSON, body, formParams, headerParams); + return handleResponse(response, JSONMapper.class); + } } 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..783beb4 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 @@ -64,40 +64,76 @@ 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 +145,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 +165,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 +185,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..0b64f1f 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 @@ -59,30 +59,58 @@ public static Response post(String url, Object body) { return getClient().post(url, MediaTypeEnum.JSON, body, (Map) null, (Map) null); } + public static Response post(String url, Object body, Map header) { + return getClient().post(url, MediaTypeEnum.JSON, body, (Map) null, header); + } + public static Response postForm(String url, Map formParams) { return getClient().post(url, MediaTypeEnum.FORM, null, formParams, (Map) null); } + public static Response postForm(String url, Map formParams, Map header) { + return getClient().post(url, MediaTypeEnum.FORM, null, formParams, header); + } + public static Response put(String url, Object body) { return getClient().put(url, MediaTypeEnum.JSON, body, (Map) null, (Map) null); } + public static Response put(String url, Object body, Map header) { + return getClient().put(url, MediaTypeEnum.JSON, body, (Map) null, header); + } + public static Response putForm(String url, Map formParams) { return getClient().put(url, MediaTypeEnum.FORM, null, formParams, (Map) null); } + public static Response putForm(String url, Map formParams, Map header) { + return getClient().put(url, MediaTypeEnum.FORM, null, formParams, header); + } + public static Response delete(String url, Object body) { return getClient().delete(url, MediaTypeEnum.JSON, body, (Map) null, (Map) null); } + public static Response delete(String url, Object body, Map header) { + return getClient().delete(url, MediaTypeEnum.JSON, body, (Map) null, header); + } + public static Response deleteForm(String url, Map formParams) { return getClient().delete(url, MediaTypeEnum.FORM, null, formParams, (Map) null); } + public static Response deleteForm(String url, Map formParams, Map header) { + return getClient().delete(url, MediaTypeEnum.FORM, null, formParams, header); + } + 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); diff --git a/pom.xml b/pom.xml index 7875953..23fd4c2 100644 --- a/pom.xml +++ b/pom.xml @@ -18,7 +18,7 @@ UTF-8 1.8 - 0.9.0 + 0.9.1 From eb3d9145d81aff3caa07fd46c8171875f63e1405 Mon Sep 17 00:00:00 2001 From: andanyang <1218853253@qq.com> Date: Tue, 14 May 2024 14:47:58 +0800 Subject: [PATCH 03/20] feat(HttpUtil): pom version --- admin4j-common-http/pom.xml | 2 +- pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/admin4j-common-http/pom.xml b/admin4j-common-http/pom.xml index f5246c1..ddd10ab 100644 --- a/admin4j-common-http/pom.xml +++ b/admin4j-common-http/pom.xml @@ -100,7 +100,7 @@ com.admin4j.json admin4j-json-fastjson2 - 0.9.0 + 0.10.0 com.squareup.okio diff --git a/pom.xml b/pom.xml index 23fd4c2..d1179d2 100644 --- a/pom.xml +++ b/pom.xml @@ -18,7 +18,7 @@ UTF-8 1.8 - 0.9.1 + 0.9.2 From cb7c5d77424701a65aa416baba3d61ebf52ba75f Mon Sep 17 00:00:00 2001 From: andyoung <1218853253@qq.com> Date: Thu, 13 Jun 2024 14:30:00 +0800 Subject: [PATCH 04/20] =?UTF-8?q?get=20=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/github/admin4j/http/util/HttpUtil.java | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) 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 0b64f1f..be36dc9 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 @@ -43,58 +43,139 @@ 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); } From ae0e80e44c476f9199c30120ce94c425de5e5dc5 Mon Sep 17 00:00:00 2001 From: QIK7 <15757856602@163.com> Date: Mon, 19 Aug 2024 23:28:40 +0800 Subject: [PATCH 05/20] =?UTF-8?q?=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/github/admin4j/http/util/HttpUtil.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) 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 be36dc9..f8a0193 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 @@ -180,10 +180,22 @@ 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 upload(String url, Map formParams) { return getClient().post(url, MediaTypeEnum.FORM_DATA, null, formParams, (Map) null); } From fb18a9d6b8bb44ddd360f4c453a884c959b5be26 Mon Sep 17 00:00:00 2001 From: andyoung <1218853253@qq.com> Date: Wed, 11 Sep 2024 23:54:34 +0800 Subject: [PATCH 06/20] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index e360b51..7b120a0 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ maven引入 io.github.admin4j http - 0.8.1 + 0.9.1 ``` @@ -150,7 +150,7 @@ maven引入 io.github.admin4j common-http-starter - 0.8.1 + 0.9.1 ``` @@ -329,7 +329,7 @@ public class EbayOrderClient extends EbayClient { io.github.admin4j http - 0.8.1 + 0.9.1 com.admin4j.json From d22cf63d0e295ccfb7f8869a20241e88f9a11f8e Mon Sep 17 00:00:00 2001 From: andyoung <1218853253@qq.com> Date: Sun, 29 Sep 2024 20:39:38 +0800 Subject: [PATCH 07/20] Update HttpUtil.java add postFormData --- .../io/github/admin4j/http/util/HttpUtil.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) 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 f8a0193..c1b8c23 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 @@ -190,6 +190,21 @@ public static Response deleteForm(String url, Map formParams, Ma 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 From ac5b6f326c2c8af824887083566c400c54c1fae0 Mon Sep 17 00:00:00 2001 From: QIK7 <15757856602@163.com> Date: Tue, 21 Jan 2025 21:12:39 +0800 Subject: [PATCH 08/20] =?UTF-8?q?feat(http):=20=E4=BF=AE=E6=94=B9=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E6=8F=90=E7=A4=BA=E6=9B=B4=E5=8A=A0=E6=98=8E=E6=98=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/github/admin4j/http/ApiJsonClient.java | 8 +++---- .../http/core/AbstractHttpExecute.java | 3 +-- .../admin4j/http/exception/HttpException.java | 4 ++++ .../src/test/java/http/ApiClientTest.java | 19 +++++++++++++++- .../src/test/java/http/ApiJsonClientTest.java | 22 +++++++++++++++++++ .../github/admin4j/http/HttpRequestTest.java | 21 +++++++++++++++++- 6 files changed, 69 insertions(+), 8 deletions(-) diff --git a/admin4j-common-http/src/main/java/io/github/admin4j/http/ApiJsonClient.java b/admin4j-common-http/src/main/java/io/github/admin4j/http/ApiJsonClient.java index 99be694..0c535bf 100644 --- a/admin4j-common-http/src/main/java/io/github/admin4j/http/ApiJsonClient.java +++ b/admin4j-common-http/src/main/java/io/github/admin4j/http/ApiJsonClient.java @@ -56,7 +56,7 @@ public T execute(Call call, Class tClass) throws HttpException { Response response = call.execute(); return handleResponse(response, tClass); } catch (IOException e) { - throw new HttpException(e); + throw new HttpException(e.getMessage(),e); } } @@ -121,7 +121,7 @@ protected T handleResponse(Response response, Class tClass, boolean isLis return handleSuccessResponse(response, tClass, isList); } } catch (IOException e) { - throw new HttpException(response.message(), e, response.code(), response.headers().toMultimap()); + throw new HttpException(e.getMessage(), e, response.code(), response.headers().toMultimap()); } } else { @@ -135,10 +135,10 @@ protected T handleResponse(Response response, Class tClass, boolean isLis respBody = response.body().string(); } catch (IOException e) { - throw new HttpException(response.message(), e, response.code(), response.headers().toMultimap()); + throw new HttpException(e.getMessage(), e, response.code(), response.headers().toMultimap()); } } - throw new HttpException(response.message(), response.code(), response.headers().toMultimap(), respBody); + throw new HttpException(respBody, response.code(), response.headers().toMultimap(), respBody); } } diff --git a/admin4j-common-http/src/main/java/io/github/admin4j/http/core/AbstractHttpExecute.java b/admin4j-common-http/src/main/java/io/github/admin4j/http/core/AbstractHttpExecute.java index fdd0719..18e4984 100644 --- a/admin4j-common-http/src/main/java/io/github/admin4j/http/core/AbstractHttpExecute.java +++ b/admin4j-common-http/src/main/java/io/github/admin4j/http/core/AbstractHttpExecute.java @@ -32,9 +32,8 @@ public Response execute(Call call, UnaryOperator function) throws Http response = function.apply(response); return response; } - //catch (SocketTimeoutException e) catch (IOException e) { - throw new HttpException(e); + throw new HttpException(e.getMessage(),e); } } 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/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/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 From fe09a2b8d882f79afdb1ded37919bf9462431c63 Mon Sep 17 00:00:00 2001 From: QIK7 <15757856602@163.com> Date: Tue, 21 Jan 2025 21:34:07 +0800 Subject: [PATCH 09/20] =?UTF-8?q?feat(http):=20HttpJsonUtil=20=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=20get=20header=20=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/github/admin4j/http/ApiJsonClient.java | 25 ++++++++++++++++++- .../http/core/AbstractHttpBuildCall.java | 5 ++++ .../http/core/AbstractHttpRequest.java | 6 ++++- .../admin4j/http/util/HttpJsonUtil.java | 19 ++++++++++++++ 4 files changed, 53 insertions(+), 2 deletions(-) diff --git a/admin4j-common-http/src/main/java/io/github/admin4j/http/ApiJsonClient.java b/admin4j-common-http/src/main/java/io/github/admin4j/http/ApiJsonClient.java index 0c535bf..583f4cf 100644 --- a/admin4j-common-http/src/main/java/io/github/admin4j/http/ApiJsonClient.java +++ b/admin4j-common-http/src/main/java/io/github/admin4j/http/ApiJsonClient.java @@ -51,6 +51,14 @@ protected T deserializeJSON(InputStream in, Class tClass, boolean isList) return JSONUtil.parseObject(in, charset, tClass); } + /** + * 执行请求,并返回 json反序列化之后的实体数据 + * @param call 请求数据 + * @param tClass 实体模型 + * @return + * @param + * @throws HttpException + */ public T execute(Call call, Class tClass) throws HttpException { try { Response response = call.execute(); @@ -205,9 +213,14 @@ public T get(String path, Map queryMap, Class tClass) { return execute(call, tClass); } + public T get(String path, Map queryMap,Map headerMap, Class tClass) { + Call call = buildGet(path, queryMap,headerMap, (Pair) null); + return execute(call, tClass); + } + public JSONMapper get(String path, Pair... queryParams) { - Response response = get(path, (Map) null, queryParams); + Response response = get(path, (Map) null,null, queryParams); return handleResponse(response, JSONMapper.class); } @@ -216,6 +229,11 @@ public JSONMapper get(String path, Map queryMap) { return handleResponse(response, JSONMapper.class); } + public JSONMapper get(String path, Map queryMap, Map headerMap) { + Response response = get(path, queryMap, headerMap, (Pair[]) null); + return handleResponse(response, JSONMapper.class); + } + public List getList(String path, Class tClass, Pair... queryParams) { Response response = get(path, (Map) null, queryParams); @@ -227,6 +245,11 @@ public List getList(String path, Map queryMap, Class t return (List) handleResponse(response, tClass, true); } + public List getList(String path, Map queryMap, Map headerMap, Class tClass) { + Response response = get(path, queryMap, headerMap, (Pair[]) null); + return (List) handleResponse(response, tClass, true); + } + public T postForm(String url, Map formParams, Class tClass) { Response response = post(url, MediaTypeEnum.FORM, null, formParams, null); diff --git a/admin4j-common-http/src/main/java/io/github/admin4j/http/core/AbstractHttpBuildCall.java b/admin4j-common-http/src/main/java/io/github/admin4j/http/core/AbstractHttpBuildCall.java index 98369da..667a2d7 100644 --- a/admin4j-common-http/src/main/java/io/github/admin4j/http/core/AbstractHttpBuildCall.java +++ b/admin4j-common-http/src/main/java/io/github/admin4j/http/core/AbstractHttpBuildCall.java @@ -399,6 +399,11 @@ public Call buildGet(String path, Map queryMap, Pair... query return buildCall(path, Method.GET, null, queryParams, queryMap, null, null, null); } + public Call buildGet(String path, Map queryMap,Map headerMap, Pair... queryParams) { + + return buildCall(path, Method.GET, null, queryParams, queryMap, null, null, headerMap); + } + // ======================= build GET POST =============== protected Call buildPost(String url, diff --git a/admin4j-common-http/src/main/java/io/github/admin4j/http/core/AbstractHttpRequest.java b/admin4j-common-http/src/main/java/io/github/admin4j/http/core/AbstractHttpRequest.java index 2d05274..43f0d49 100644 --- a/admin4j-common-http/src/main/java/io/github/admin4j/http/core/AbstractHttpRequest.java +++ b/admin4j-common-http/src/main/java/io/github/admin4j/http/core/AbstractHttpRequest.java @@ -45,8 +45,12 @@ public OkHttpClient getHttpClient() { // ======================= GET POST =============== public Response get(String path, Map queryMap, Pair... queryParams) { + return get(path, queryMap,null, queryParams); + } + + public Response get(String path, Map queryMap, Map 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/util/HttpJsonUtil.java b/admin4j-common-http/src/main/java/io/github/admin4j/http/util/HttpJsonUtil.java index 783beb4..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,11 +54,30 @@ 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); From f484257854a95a2afe66f4df6397cb22b92ee5df Mon Sep 17 00:00:00 2001 From: QIK7 <15757856602@163.com> Date: Tue, 21 Jan 2025 21:35:00 +0800 Subject: [PATCH 10/20] feat(http): version 0.9.5 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d1179d2..6579999 100644 --- a/pom.xml +++ b/pom.xml @@ -18,7 +18,7 @@ UTF-8 1.8 - 0.9.2 + 0.9.5 From c93a18b2c41a64fcc62a83953fb061c8da98d71b Mon Sep 17 00:00:00 2001 From: QIK7 <15757856602@163.com> Date: Wed, 22 Jan 2025 00:16:40 +0800 Subject: [PATCH 11/20] =?UTF-8?q?feat(http):=20pom.xml=20=E6=89=93?= =?UTF-8?q?=E5=8C=85=E6=96=B9=E5=BC=8F=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- admin4j-common-http-starter/pom.xml | 119 --------------------------- admin4j-common-http/pom.xml | 120 ---------------------------- pom.xml | 45 +++++------ 3 files changed, 19 insertions(+), 265 deletions(-) diff --git a/admin4j-common-http-starter/pom.xml b/admin4j-common-http-starter/pom.xml index 1b352eb..95ac9dd 100644 --- a/admin4j-common-http-starter/pom.xml +++ b/admin4j-common-http-starter/pom.xml @@ -124,125 +124,6 @@ - - - - ${repository.releases.id} - nexus-releases - ${repository.releases.url} - - - ${repository.releases.id} - nexus-snapshot - ${repository.snapshots.url} - - - - - ossrh - - false - - - ossrh - https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/ - - https://s01.oss.sonatype.org/content/repositories/snapshots - - - - - - - org.apache.maven.plugins - maven-source-plugin - 2.2.1 - - - attach-sources - - jar-no-fork - - - - - - org.apache.maven.plugins - maven-javadoc-plugin - 2.9.1 - - private - true - UTF-8 - UTF-8 - UTF-8 - - -Xdoclint:none - - - - package - - jar - - - - - - org.springframework.boot - spring-boot-maven-plugin - 2.7.12 - - - - org.projectlombok - lombok - - - org.springframework.boot - spring-boot-autoconfigure-processor - - - org.springframework.boot - spring-boot-autoconfigure - - - org.springframework.boot - spring-boot-configuration-processor - - - - - - org.sonatype.plugins - nexus-staging-maven-plugin - 1.6.13 - true - - ossrh - https://s01.oss.sonatype.org/ - true - true - - - - org.apache.maven.plugins - maven-gpg-plugin - 3.1.0 - - - sign-artifacts - verify - - sign - - - - - - - - \ No newline at end of file diff --git a/admin4j-common-http/pom.xml b/admin4j-common-http/pom.xml index ddd10ab..271060e 100644 --- a/admin4j-common-http/pom.xml +++ b/admin4j-common-http/pom.xml @@ -165,125 +165,5 @@ +8 - - - - ${repository.releases.id} - nexus-releases - ${repository.releases.url} - - - ${repository.releases.id} - nexus-snapshot - ${repository.snapshots.url} - - - - - - ossrh - - false - - - ossrh - https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/ - - https://s01.oss.sonatype.org/content/repositories/snapshots - - - - - - - org.apache.maven.plugins - maven-source-plugin - 2.2.1 - - - attach-sources - - jar-no-fork - - - - - - org.apache.maven.plugins - maven-javadoc-plugin - 2.9.1 - - private - true - UTF-8 - UTF-8 - UTF-8 - - -Xdoclint:none - - - - package - - jar - - - - - - org.springframework.boot - spring-boot-maven-plugin - 2.7.12 - - - - org.projectlombok - lombok - - - org.springframework.boot - spring-boot-autoconfigure-processor - - - org.springframework.boot - spring-boot-autoconfigure - - - org.springframework.boot - spring-boot-configuration-processor - - - - - - org.sonatype.plugins - nexus-staging-maven-plugin - 1.6.13 - true - - ossrh - https://s01.oss.sonatype.org/ - true - true - - - - org.apache.maven.plugins - maven-gpg-plugin - 3.1.0 - - - sign-artifacts - verify - - sign - - - - - - - - diff --git a/pom.xml b/pom.xml index 6579999..2de3248 100644 --- a/pom.xml +++ b/pom.xml @@ -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 From f4bcb935bd87ede0d001df8b9e206ff2056250b2 Mon Sep 17 00:00:00 2001 From: QIK7 <15757856602@163.com> Date: Wed, 22 Jan 2025 20:16:23 +0800 Subject: [PATCH 12/20] feat(http): CI maven-publish-starter.yml --- .github/workflows/maven-publish-starter.yml | 45 +++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 .github/workflows/maven-publish-starter.yml diff --git a/.github/workflows/maven-publish-starter.yml b/.github/workflows/maven-publish-starter.yml new file mode 100644 index 0000000..a7e0dcc --- /dev/null +++ b/.github/workflows/maven-publish-starter.yml @@ -0,0 +1,45 @@ +# This workflow will build a package using Maven and then publish it to GitHub packages when a release is created +# For more information see: https://github.com/actions/setup-java/blob/main/docs/advanced-usage.md#apache-maven-with-a-settings-path + +name: Maven Package + +on: + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + + steps: + - uses: actions/checkout@v3 + - name: Set up JDK 8 + uses: actions/setup-java@v3 + with: + java-version: 8 + distribution: temurin + server-id: ossrh + server-username: MAVEN_USERNAME + server-password: MAVEN_PASSWORD + gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }} + gpg-passphrase: MAVEN_GPG_PASSPHRASE + + - name: Build with Maven + run: mvn -B clean package -Dmaven.test.skip=true --file admin4j-common-http-starter/pom.xml + + - name: Set up Apache Maven Central + run: mvn deploy -Dmaven.test.skip=true -Possrh --file admin4j-common-http-starter/pom.xml + env: + MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_PASSWORD }} + MAVEN_USERNAME: ${{ secrets.OSSRH_USER }} + MAVEN_PASSWORD: ${{ secrets.OSSRH_PASSWORD }} + GITHUB_TOKEN: ${{ github.token }} +# GPG_PRIVATE_KEY: + +# -----BEGIN PGP PRIVATE KEY BLOCK----- +# *** +# -----END PGP PRIVATE KEY BLOCK----- + +# GPG_PASSWORD GPG_PRIVATE_KEY 的密码 From 8108e9a3f73b58f328e2f402e5979e4e2d2ee383 Mon Sep 17 00:00:00 2001 From: QIK7 <15757856602@163.com> Date: Wed, 22 Jan 2025 20:32:21 +0800 Subject: [PATCH 13/20] feat(http): CI maven-publish-starter.yml update name --- .github/workflows/maven-publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml index 077a012..da05010 100644 --- a/.github/workflows/maven-publish.yml +++ b/.github/workflows/maven-publish.yml @@ -1,7 +1,7 @@ # This workflow will build a package using Maven and then publish it to GitHub packages when a release is created # For more information see: https://github.com/actions/setup-java/blob/main/docs/advanced-usage.md#apache-maven-with-a-settings-path -name: Maven Package +name: deployment http starter on: release: From 9fc75a4ce684bec734a40083b0ffde84de1ed5d8 Mon Sep 17 00:00:00 2001 From: QIK7 <15757856602@163.com> Date: Wed, 22 Jan 2025 20:50:04 +0800 Subject: [PATCH 14/20] feat(http): CI maven-publish-starter.yml maven --- .github/workflows/maven-publish-starter.yml | 5 +++++ .github/workflows/maven-publish.yml | 9 +++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/.github/workflows/maven-publish-starter.yml b/.github/workflows/maven-publish-starter.yml index a7e0dcc..414e94b 100644 --- a/.github/workflows/maven-publish-starter.yml +++ b/.github/workflows/maven-publish-starter.yml @@ -25,6 +25,11 @@ jobs: server-password: MAVEN_PASSWORD gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }} gpg-passphrase: MAVEN_GPG_PASSPHRASE + key: maven + path: | + /home/runner/.m2 + restore-keys: | + maven - name: Build with Maven run: mvn -B clean package -Dmaven.test.skip=true --file admin4j-common-http-starter/pom.xml diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml index da05010..55bdd5e 100644 --- a/.github/workflows/maven-publish.yml +++ b/.github/workflows/maven-publish.yml @@ -16,9 +16,9 @@ jobs: packages: write steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up JDK 8 - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: java-version: 8 distribution: temurin @@ -27,6 +27,11 @@ jobs: server-password: MAVEN_PASSWORD gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }} gpg-passphrase: MAVEN_GPG_PASSPHRASE + key: maven + path: | + /home/runner/.m2 + restore-keys: | + maven - name: Build with Maven run: mvn -B clean package -Dmaven.test.skip=true --file pom.xml From 910b0c2e93a6e621fbea9eea3795f7e2c43461bc Mon Sep 17 00:00:00 2001 From: andyoung <1218853253@qq.com> Date: Wed, 22 Jan 2025 20:55:27 +0800 Subject: [PATCH 15/20] Update maven-publish-starter.yml --- .github/workflows/maven-publish-starter.yml | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/.github/workflows/maven-publish-starter.yml b/.github/workflows/maven-publish-starter.yml index 414e94b..f9e98bc 100644 --- a/.github/workflows/maven-publish-starter.yml +++ b/.github/workflows/maven-publish-starter.yml @@ -14,9 +14,9 @@ jobs: packages: write steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up JDK 8 - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: java-version: 8 distribution: temurin @@ -25,11 +25,8 @@ jobs: server-password: MAVEN_PASSWORD gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }} gpg-passphrase: MAVEN_GPG_PASSPHRASE - key: maven - path: | - /home/runner/.m2 - restore-keys: | - maven + cache: 'maven' + cache-dependency-path: '/home/runner/.m2' - name: Build with Maven run: mvn -B clean package -Dmaven.test.skip=true --file admin4j-common-http-starter/pom.xml From 7fdd3ffe90e7dab0e3fb14d05527784db1cdcc46 Mon Sep 17 00:00:00 2001 From: QIK7 <15757856602@163.com> Date: Wed, 22 Jan 2025 21:00:54 +0800 Subject: [PATCH 16/20] feat(http): CI --- .github/workflows/maven-publish.yml | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml index 55bdd5e..c7516eb 100644 --- a/.github/workflows/maven-publish.yml +++ b/.github/workflows/maven-publish.yml @@ -1,7 +1,7 @@ # This workflow will build a package using Maven and then publish it to GitHub packages when a release is created # For more information see: https://github.com/actions/setup-java/blob/main/docs/advanced-usage.md#apache-maven-with-a-settings-path -name: deployment http starter +name: deployment all on: release: @@ -27,11 +27,6 @@ jobs: server-password: MAVEN_PASSWORD gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }} gpg-passphrase: MAVEN_GPG_PASSPHRASE - key: maven - path: | - /home/runner/.m2 - restore-keys: | - maven - name: Build with Maven run: mvn -B clean package -Dmaven.test.skip=true --file pom.xml From efe376bd994adc4e1c8a6ca60b14c2facff4f22c Mon Sep 17 00:00:00 2001 From: QIK7 <15757856602@163.com> Date: Wed, 22 Jan 2025 21:01:39 +0800 Subject: [PATCH 17/20] feat(http): CI --- .github/workflows/maven-publish-starter.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/maven-publish-starter.yml b/.github/workflows/maven-publish-starter.yml index f9e98bc..36c41af 100644 --- a/.github/workflows/maven-publish-starter.yml +++ b/.github/workflows/maven-publish-starter.yml @@ -1,7 +1,7 @@ # This workflow will build a package using Maven and then publish it to GitHub packages when a release is created # For more information see: https://github.com/actions/setup-java/blob/main/docs/advanced-usage.md#apache-maven-with-a-settings-path -name: Maven Package +name: http starter on: workflow_dispatch: @@ -26,7 +26,6 @@ jobs: gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }} gpg-passphrase: MAVEN_GPG_PASSPHRASE cache: 'maven' - cache-dependency-path: '/home/runner/.m2' - name: Build with Maven run: mvn -B clean package -Dmaven.test.skip=true --file admin4j-common-http-starter/pom.xml From a46d6cc07def81174bb18ae60dc163771e33fbd6 Mon Sep 17 00:00:00 2001 From: QIK7 <15757856602@163.com> Date: Sun, 9 Feb 2025 21:12:18 +0800 Subject: [PATCH 18/20] feat(http): readme version --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 7b120a0..31b605a 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ maven引入 io.github.admin4j http - 0.9.1 + 0.9.5 ``` @@ -150,7 +150,7 @@ maven引入 io.github.admin4j common-http-starter - 0.9.1 + 0.9.5 ``` @@ -329,7 +329,7 @@ public class EbayOrderClient extends EbayClient { io.github.admin4j http - 0.9.1 + 0.9.5 com.admin4j.json From 745ca67cb7a65d51de1ebf8765f846a57f44b4de Mon Sep 17 00:00:00 2001 From: QIK7 <15757856602@163.com> Date: Sun, 9 Feb 2025 21:46:00 +0800 Subject: [PATCH 19/20] =?UTF-8?q?feat(http):=20HttpConfig=20=E6=94=AF?= =?UTF-8?q?=E6=8C=81http=E5=8D=8F=E8=AE=AE=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/github/admin4j/http/HttpRequest.java | 5 +++-- .../github/admin4j/http/core/HttpConfig.java | 20 +++++++++++++++++++ .../http/factory/HttpClientFactory.java | 6 ++++++ 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/admin4j-common-http/src/main/java/io/github/admin4j/http/HttpRequest.java b/admin4j-common-http/src/main/java/io/github/admin4j/http/HttpRequest.java index 398a3d0..5cefa90 100644 --- a/admin4j-common-http/src/main/java/io/github/admin4j/http/HttpRequest.java +++ b/admin4j-common-http/src/main/java/io/github/admin4j/http/HttpRequest.java @@ -13,7 +13,6 @@ import okhttp3.Callback; import okhttp3.Response; -import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.Map; @@ -161,6 +160,8 @@ public HttpRequest body(Object body) { return this; } + //============= 发送http 请求 ================= + public Response execute() { ApiClient apiClient = HttpUtil.getClient(); @@ -175,7 +176,7 @@ public void asyncExecute(Callback callback) { apiClient.executeAsync(call, callback); } - public T execute(Class clas) throws IOException { + public T execute(Class clas) { @Cleanup InputStream is = Objects.requireNonNull(execute().body()).byteStream(); return JSONUtil.parseObject(is, clas); 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/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(); } } From c7b4ae1e79c558a449ee3859d00c4de5336206b1 Mon Sep 17 00:00:00 2001 From: QIK7 <15757856602@163.com> Date: Tue, 11 Mar 2025 22:40:59 +0800 Subject: [PATCH 20/20] =?UTF-8?q?feat(http):=20HttpUtil=20=E6=94=AF?= =?UTF-8?q?=E6=8C=81=20send=20HttpRequest?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/github/admin4j/http/HttpRequest.java | 2 + .../io/github/admin4j/http/util/HttpUtil.java | 50 +++++++++++++++++-- 2 files changed, 49 insertions(+), 3 deletions(-) diff --git a/admin4j-common-http/src/main/java/io/github/admin4j/http/HttpRequest.java b/admin4j-common-http/src/main/java/io/github/admin4j/http/HttpRequest.java index 5cefa90..79f1bad 100644 --- a/admin4j-common-http/src/main/java/io/github/admin4j/http/HttpRequest.java +++ b/admin4j-common-http/src/main/java/io/github/admin4j/http/HttpRequest.java @@ -7,6 +7,7 @@ import io.github.admin4j.http.core.Pair; import io.github.admin4j.http.util.HttpUtil; import lombok.Cleanup; +import lombok.Getter; import lombok.Setter; import lombok.experimental.Accessors; import okhttp3.Call; @@ -22,6 +23,7 @@ * @author andanyang * @since 2022/10/14 15:43 */ +@Getter public class HttpRequest { private Method method; 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 c1b8c23..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; @@ -45,6 +48,7 @@ public static void setClient(ApiClient apiJsonClient) { /** * get 请求 + * * @param url * @param queryParams 查询参数 * @return @@ -57,6 +61,7 @@ public static Response get(String url, Pair... queryParams) { /** * get 请求 + * * @param url * @param queryParams 查询参数 * @return @@ -69,6 +74,7 @@ public static Response get(String url, Map queryParams) { /** * post 请求 + * * @param url * @param body post body 体 * @return @@ -79,8 +85,9 @@ public static Response post(String url, Object body) { /** * post(application/json;) 请求 + * * @param url - * @param body post body 体 + * @param body post body 体 * @param header header 头 * @return */ @@ -89,7 +96,8 @@ public static Response post(String url, Object body, Map header) } /** - * form(x-www-form-urlencoded) 格式的 post 请求 + * form(x-www-form-urlencoded) 格式的 post 请求 + * * @param url * @param formParams * @return @@ -100,6 +108,7 @@ public static Response postForm(String url, Map formParams) { /** * form(x-www-form-urlencoded) 格式的 post 请求 + * * @param url * @param formParams * @param header @@ -111,6 +120,7 @@ public static Response postForm(String url, Map formParams, Map< /** * put 请求 + * * @param url * @param body * @return @@ -121,6 +131,7 @@ public static Response put(String url, Object body) { /** * put 请求 + * * @param url * @param body * @param header @@ -132,6 +143,7 @@ public static Response put(String url, Object body, Map header) /** * form(x-www-form-urlencoded) 格式的 put 请求 + * * @param url * @param formParams * @return @@ -142,6 +154,7 @@ public static Response putForm(String url, Map formParams) { /** * form(x-www-form-urlencoded) 格式的 put 请求 + * * @param url * @param formParams * @return @@ -152,6 +165,7 @@ public static Response putForm(String url, Map formParams, Map heade /** * form(x-www-form-urlencoded) 格式的 delete 请求 + * * @param url * @param formParams * @return @@ -182,6 +198,7 @@ public static Response deleteForm(String url, Map formParams) { /** * form(x-www-form-urlencoded) 格式的 delete 请求 + * * @param url * @param formParams * @return @@ -192,6 +209,7 @@ public static Response deleteForm(String url, Map formParams, Ma /** * form-data(multipart/form-data) 格式的 post 请求 + * * @param url * @param formParams * @return @@ -204,9 +222,10 @@ public static Response postFormData(String url, Map formParams, return getClient().post(url, MediaTypeEnum.FORM_DATA, null, formParams, header); } - + /** * form-data(multipart/form-data) 格式的 post 请求 + * * @param url * @param formParams * @return @@ -250,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); + } }