From 4cd6d85bc1876c68160baab9cc97c4c339c27695 Mon Sep 17 00:00:00 2001 From: redkale Date: Thu, 25 Jan 2024 10:25:41 +0800 Subject: [PATCH] WebRequest --- .../java/org/redkale/boot/Application.java | 10 +- .../org/redkale/cluster/HttpRpcClient.java | 30 ++--- .../cluster/spi/HttpClusterRpcClient.java | 18 +-- .../cluster/spi/HttpLocalRpcClient.java | 14 +-- .../redkale/mq/spi/HttpMessageRequest.java | 4 +- .../redkale/mq/spi/HttpRpcMessageClient.java | 8 +- .../org/redkale/mq/spi/MessageRecord.java | 6 +- ...RequestCoder.java => WebRequestCoder.java} | 16 +-- .../org/redkale/net/http/HttpRequest.java | 8 +- .../{HttpSimpleClient.java => WebClient.java} | 32 ++--- .../{HttpSimpleCodec.java => WebCodec.java} | 20 +-- ...mpleConnection.java => WebConnection.java} | 6 +- ...HttpSimpleRequest.java => WebRequest.java} | 114 +++++++++--------- .../{HttpSimpleResult.java => WebResult.java} | 3 +- .../test/http/HttpSimpleClientTest.java | 12 +- .../redkale/test/http/RequestCoderTest.java | 22 ++-- 16 files changed, 162 insertions(+), 161 deletions(-) rename src/main/java/org/redkale/mq/spi/{HttpSimpleRequestCoder.java => WebRequestCoder.java} (90%) rename src/main/java/org/redkale/net/http/{HttpSimpleClient.java => WebClient.java} (93%) rename src/main/java/org/redkale/net/http/{HttpSimpleCodec.java => WebCodec.java} (87%) rename src/main/java/org/redkale/net/http/{HttpSimpleConnection.java => WebConnection.java} (63%) rename src/main/java/org/redkale/net/http/{HttpSimpleRequest.java => WebRequest.java} (75%) rename src/main/java/org/redkale/net/http/{HttpSimpleResult.java => WebResult.java} (85%) diff --git a/src/main/java/org/redkale/boot/Application.java b/src/main/java/org/redkale/boot/Application.java index b10c1671d..78f834a65 100644 --- a/src/main/java/org/redkale/boot/Application.java +++ b/src/main/java/org/redkale/boot/Application.java @@ -468,19 +468,19 @@ public final class Application { return null; } }, java.net.http.HttpClient.class); - //------------------------------------ 注册 HttpSimpleClient ------------------------------------ + //------------------------------------ 注册 WebClient ------------------------------------ resourceFactory.register((ResourceFactory rf, String srcResourceName, Object srcObj, String resourceName, Field field, Object attachment) -> { try { - HttpSimpleClient httpClient = HttpSimpleClient.create(workExecutor, clientAsyncGroup); + WebClient httpClient = WebClient.create(workExecutor, clientAsyncGroup); field.set(srcObj, httpClient); rf.inject(resourceName, httpClient, null); // 给其可能包含@Resource的字段赋值; - rf.register(resourceName, HttpSimpleClient.class, httpClient); + rf.register(resourceName, WebClient.class, httpClient); return httpClient; } catch (Exception e) { - logger.log(Level.SEVERE, HttpSimpleClient.class.getSimpleName() + " inject error", e); + logger.log(Level.SEVERE, WebClient.class.getSimpleName() + " inject error", e); return null; } - }, HttpSimpleClient.class); + }, WebClient.class); //------------------------------------ 注册 HttpRpcClient ------------------------------------ resourceFactory.register((ResourceFactory rf, String srcResourceName, Object srcObj, String resourceName, Field field, Object attachment) -> { try { diff --git a/src/main/java/org/redkale/cluster/HttpRpcClient.java b/src/main/java/org/redkale/cluster/HttpRpcClient.java index fd75bbf0c..fc93ee452 100644 --- a/src/main/java/org/redkale/cluster/HttpRpcClient.java +++ b/src/main/java/org/redkale/cluster/HttpRpcClient.java @@ -22,43 +22,43 @@ import org.redkale.util.RedkaleException; * * @since 2.1.0 */ -public abstract class HttpRpcClient implements ClusterRpcClient> { +public abstract class HttpRpcClient implements ClusterRpcClient> { @Override - public final CompletableFuture produceMessage(HttpSimpleRequest request) { + public final CompletableFuture produceMessage(WebRequest request) { return produceMessage(generateHttpReqTopic(request, null), 0, null, request); } - public final CompletableFuture produceMessage(Serializable userid, HttpSimpleRequest request) { + public final CompletableFuture produceMessage(Serializable userid, WebRequest request) { return produceMessage(generateHttpReqTopic(request, null), userid, null, request); } - public final CompletableFuture produceMessage(Serializable userid, String groupid, HttpSimpleRequest request) { + public final CompletableFuture produceMessage(Serializable userid, String groupid, WebRequest request) { return produceMessage(generateHttpReqTopic(request, null), userid, groupid, request); } - public final CompletableFuture produceMessage(String topic, HttpSimpleRequest request) { + public final CompletableFuture produceMessage(String topic, WebRequest request) { return produceMessage(topic, 0, null, request); } @Override - public final CompletableFuture> sendMessage(HttpSimpleRequest request) { + public final CompletableFuture> sendMessage(WebRequest request) { return sendMessage(generateHttpReqTopic(request, null), 0, null, request); } - public final CompletableFuture> sendMessage(Serializable userid, HttpSimpleRequest request) { + public final CompletableFuture> sendMessage(Serializable userid, WebRequest request) { return sendMessage(generateHttpReqTopic(request, null), userid, null, request); } - public final CompletableFuture> sendMessage(Serializable userid, String groupid, HttpSimpleRequest request) { + public final CompletableFuture> sendMessage(Serializable userid, String groupid, WebRequest request) { return sendMessage(generateHttpReqTopic(request, null), userid, groupid, request); } - public final CompletableFuture> sendMessage(String topic, HttpSimpleRequest request) { + public final CompletableFuture> sendMessage(String topic, WebRequest request) { return sendMessage(topic, 0, null, request); } - public CompletableFuture sendMessage(HttpSimpleRequest request, Type type) { + public CompletableFuture sendMessage(WebRequest request, Type type) { return sendMessage(generateHttpReqTopic(request, null), 0, null, request).thenApply((HttpResult httbs) -> { if (!httbs.isSuccess()) { throw new RedkaleException(httbs.getHeader("retinfo", "Internal Server Error")); @@ -70,7 +70,7 @@ public abstract class HttpRpcClient implements ClusterRpcClient CompletableFuture sendMessage(Serializable userid, HttpSimpleRequest request, Type type) { + public CompletableFuture sendMessage(Serializable userid, WebRequest request, Type type) { return sendMessage(generateHttpReqTopic(request, null), userid, null, request).thenApply((HttpResult httbs) -> { if (!httbs.isSuccess()) { throw new RedkaleException(httbs.getHeader("retinfo", "Internal Server Error")); @@ -82,7 +82,7 @@ public abstract class HttpRpcClient implements ClusterRpcClient CompletableFuture sendMessage(Serializable userid, String groupid, HttpSimpleRequest request, Type type) { + public CompletableFuture sendMessage(Serializable userid, String groupid, WebRequest request, Type type) { return sendMessage(generateHttpReqTopic(request, null), userid, groupid, request).thenApply((HttpResult httbs) -> { if (!httbs.isSuccess()) { throw new RedkaleException(httbs.getHeader("retinfo", "Internal Server Error")); @@ -104,7 +104,7 @@ public abstract class HttpRpcClient implements ClusterRpcClient> sendMessage(String topic, Serializable userid, String groupid, HttpSimpleRequest request); + public abstract CompletableFuture> sendMessage(String topic, Serializable userid, String groupid, WebRequest request); - public abstract CompletableFuture produceMessage(String topic, Serializable userid, String groupid, HttpSimpleRequest request); + public abstract CompletableFuture produceMessage(String topic, Serializable userid, String groupid, WebRequest request); protected abstract String getNodeid(); diff --git a/src/main/java/org/redkale/cluster/spi/HttpClusterRpcClient.java b/src/main/java/org/redkale/cluster/spi/HttpClusterRpcClient.java index 032a9f4b2..0abbc720d 100644 --- a/src/main/java/org/redkale/cluster/spi/HttpClusterRpcClient.java +++ b/src/main/java/org/redkale/cluster/spi/HttpClusterRpcClient.java @@ -42,7 +42,7 @@ public class HttpClusterRpcClient extends HttpRpcClient { protected ClusterAgent clusterAgent; @Resource(name = "cluster.httpClient", required = false) - protected HttpSimpleClient httpSimpleClient; + protected WebClient webClient; @Resource(name = "cluster.httpClient", required = false) protected java.net.http.HttpClient httpClient; @@ -59,7 +59,7 @@ public class HttpClusterRpcClient extends HttpRpcClient { } @Override - public CompletableFuture> sendMessage(String topic, Serializable userid, String groupid, HttpSimpleRequest request) { + public CompletableFuture> sendMessage(String topic, Serializable userid, String groupid, WebRequest request) { if (topicServletMap.computeIfAbsent(topic, t -> localClient.findHttpServlet(t) != null)) { return localClient.sendMessage(topic, userid, groupid, request); } else { @@ -68,7 +68,7 @@ public class HttpClusterRpcClient extends HttpRpcClient { } @Override - public CompletableFuture produceMessage(String topic, Serializable userid, String groupid, HttpSimpleRequest request) { + public CompletableFuture produceMessage(String topic, Serializable userid, String groupid, WebRequest request) { if (topicServletMap.computeIfAbsent(topic, t -> localClient.findHttpServlet(t) != null)) { return localClient.produceMessage(topic, userid, groupid, request); } else { @@ -76,7 +76,7 @@ public class HttpClusterRpcClient extends HttpRpcClient { } } - private CompletableFuture> httpAsync(boolean produce, Serializable userid, HttpSimpleRequest req) { + private CompletableFuture> httpAsync(boolean produce, Serializable userid, WebRequest req) { req.setTraceid(Traces.computeIfAbsent(req.getTraceid(), Traces.currentTraceid())); String module = req.getPath(); module = module.substring(1, module.indexOf('/', 1)); @@ -123,13 +123,13 @@ public class HttpClusterRpcClient extends HttpRpcClient { clientHeaders.set(Rest.REST_HEADER_RESP_CONVERT, req.getRespConvertType().toString()); } - if (httpSimpleClient != null) { - HttpSimpleRequest newReq = req.copy().headers(clientHeaders); + if (webClient != null) { + WebRequest newReq = req.copy().headers(clientHeaders); InetSocketAddress addr = randomAddress(newReq, addrs); if (logger.isLoggable(Level.FINEST)) { logger.log(Level.FINEST, "httpAsync: module=" + localModule + ", resname=" + resname + ", addr=" + addr); } - return (CompletableFuture) httpSimpleClient.sendAsync(addr, newReq); + return (CompletableFuture) webClient.sendAsync(addr, newReq); } byte[] clientBody = null; if (isNotEmpty(req.getBody())) { @@ -155,12 +155,12 @@ public class HttpClusterRpcClient extends HttpRpcClient { }); } - protected InetSocketAddress randomAddress(HttpSimpleRequest req, Set addrs) { + protected InetSocketAddress randomAddress(WebRequest req, Set addrs) { InetSocketAddress[] array = addrs.toArray(new InetSocketAddress[addrs.size()]); return array[ThreadLocalRandom.current().nextInt(array.length)]; } - protected CompletableFuture> sendEachAddressAsync(HttpSimpleRequest req, + protected CompletableFuture> sendEachAddressAsync(WebRequest req, String requestPath, final HttpHeaders clientHeaders, byte[] clientBody, Iterator it) { if (!it.hasNext()) { return new HttpResult().status(404).toFuture(); diff --git a/src/main/java/org/redkale/cluster/spi/HttpLocalRpcClient.java b/src/main/java/org/redkale/cluster/spi/HttpLocalRpcClient.java index 70daad119..0b22dcb7a 100644 --- a/src/main/java/org/redkale/cluster/spi/HttpLocalRpcClient.java +++ b/src/main/java/org/redkale/cluster/spi/HttpLocalRpcClient.java @@ -89,22 +89,22 @@ public class HttpLocalRpcClient extends HttpRpcClient { return dispatcherServlet().findServletByTopic(topic); } - public HttpServlet findHttpServlet(HttpSimpleRequest request) { + public HttpServlet findHttpServlet(WebRequest request) { return dispatcherServlet().findServletByTopic(generateHttpReqTopic(request, request.getContextPath())); } @Override - public CompletableFuture sendMessage(HttpSimpleRequest request, Type type) { + public CompletableFuture sendMessage(WebRequest request, Type type) { return sendMessage((Serializable) null, (String) null, request, type); } @Override - public CompletableFuture sendMessage(Serializable userid, HttpSimpleRequest request, Type type) { + public CompletableFuture sendMessage(Serializable userid, WebRequest request, Type type) { return sendMessage(userid, (String) null, request, type); } @Override - public CompletableFuture sendMessage(Serializable userid, String groupid, HttpSimpleRequest request, Type type) { + public CompletableFuture sendMessage(Serializable userid, String groupid, WebRequest request, Type type) { if (isEmpty(request.getTraceid())) { request.setTraceid(Traces.currentTraceid()); } @@ -129,7 +129,7 @@ public class HttpLocalRpcClient extends HttpRpcClient { } @Override - public CompletableFuture> sendMessage(String topic, Serializable userid, String groupid, HttpSimpleRequest request) { + public CompletableFuture> sendMessage(String topic, Serializable userid, String groupid, WebRequest request) { if (isEmpty(request.getTraceid())) { request.setTraceid(Traces.currentTraceid()); } @@ -166,7 +166,7 @@ public class HttpLocalRpcClient extends HttpRpcClient { } @Override - public CompletableFuture produceMessage(String topic, Serializable userid, String groupid, HttpSimpleRequest request) { + public CompletableFuture produceMessage(String topic, Serializable userid, String groupid, WebRequest request) { CompletableFuture future = new CompletableFuture(); HttpDispatcherServlet ps = dispatcherServlet(); HttpServlet servlet = ps.findServletByTopic(topic); @@ -192,7 +192,7 @@ public class HttpLocalRpcClient extends HttpRpcClient { public static class HttpMessageLocalRequest extends HttpRequest { - public HttpMessageLocalRequest(HttpContext context, HttpSimpleRequest req, Serializable userid) { + public HttpMessageLocalRequest(HttpContext context, WebRequest req, Serializable userid) { super(context, req); if (userid != null) { this.currentUserid = userid; diff --git a/src/main/java/org/redkale/mq/spi/HttpMessageRequest.java b/src/main/java/org/redkale/mq/spi/HttpMessageRequest.java index 2e20275bd..c14173adb 100644 --- a/src/main/java/org/redkale/mq/spi/HttpMessageRequest.java +++ b/src/main/java/org/redkale/mq/spi/HttpMessageRequest.java @@ -26,14 +26,14 @@ public class HttpMessageRequest extends HttpRequest { } public HttpMessageRequest(HttpContext context, MessageRecord message) { - super(context, (HttpSimpleRequest) null); + super(context, (WebRequest) null); if (message != null) { prepare(message); } } protected HttpMessageRequest prepare(MessageRecord message) { - super.initSimpleRequest(message.decodeContent(HttpSimpleRequestCoder.getInstance()), false); + super.initSimpleRequest(message.decodeContent(WebRequestCoder.getInstance()), false); this.message = message; this.currentUserid = message.getUserid(); this.createTime = System.currentTimeMillis(); diff --git a/src/main/java/org/redkale/mq/spi/HttpRpcMessageClient.java b/src/main/java/org/redkale/mq/spi/HttpRpcMessageClient.java index d002018a4..10950ef5e 100644 --- a/src/main/java/org/redkale/mq/spi/HttpRpcMessageClient.java +++ b/src/main/java/org/redkale/mq/spi/HttpRpcMessageClient.java @@ -8,7 +8,7 @@ import java.util.concurrent.CompletableFuture; import org.redkale.cluster.HttpRpcClient; import static org.redkale.mq.spi.MessageRecord.CTYPE_HTTP_REQUEST; import org.redkale.net.http.HttpResult; -import org.redkale.net.http.HttpSimpleRequest; +import org.redkale.net.http.WebRequest; /** * @@ -16,7 +16,7 @@ import org.redkale.net.http.HttpSimpleRequest; */ final class HttpRpcMessageClient extends HttpRpcClient { - private final MessageCoder requestCoder = HttpSimpleRequestCoder.getInstance(); + private final MessageCoder requestCoder = WebRequestCoder.getInstance(); private final String nodeid; @@ -28,14 +28,14 @@ final class HttpRpcMessageClient extends HttpRpcClient { } @Override - public CompletableFuture> sendMessage(String topic, Serializable userid, String groupid, HttpSimpleRequest request) { + public CompletableFuture> sendMessage(String topic, Serializable userid, String groupid, WebRequest request) { MessageRecord message = messageClient.createMessageRecord(CTYPE_HTTP_REQUEST, topic, null, request.getTraceid(), requestCoder.encode(request)); message.userid(userid).groupid(groupid); return messageClient.sendMessage(message).thenApply(r -> r.decodeContent(HttpResultCoder.getInstance())); } @Override - public CompletableFuture produceMessage(String topic, Serializable userid, String groupid, HttpSimpleRequest request) { + public CompletableFuture produceMessage(String topic, Serializable userid, String groupid, WebRequest request) { MessageRecord message = messageClient.createMessageRecord(CTYPE_HTTP_REQUEST, topic, null, request.getTraceid(), requestCoder.encode(request)); message.userid(userid).groupid(groupid); return messageClient.produceMessage(message); diff --git a/src/main/java/org/redkale/mq/spi/MessageRecord.java b/src/main/java/org/redkale/mq/spi/MessageRecord.java index 0fafe1182..ec722d369 100644 --- a/src/main/java/org/redkale/mq/spi/MessageRecord.java +++ b/src/main/java/org/redkale/mq/spi/MessageRecord.java @@ -11,7 +11,7 @@ import java.util.Arrays; import org.redkale.annotation.Comment; import org.redkale.convert.*; import org.redkale.convert.json.JsonConvert; -import org.redkale.net.http.HttpSimpleRequest; +import org.redkale.net.http.WebRequest; import org.redkale.net.http.WebSocketPacket; import org.redkale.net.sncp.SncpHeader; import org.redkale.util.RedkaleException; @@ -38,7 +38,7 @@ public class MessageRecord implements Serializable { //Bson bytes public static final byte CTYPE_BSON = 2; - //HttpSimpleRequest + //WebRequest public static final byte CTYPE_HTTP_REQUEST = 3; //HttpResult @@ -336,7 +336,7 @@ public class MessageRecord implements Serializable { //SncpHeader包含不确定长度的信息,故不能再直接偏移读取 sb.append(",\"content\":").append("bytes[" + this.content.length + "]"); } else if (this.ctype == CTYPE_HTTP_REQUEST) { - HttpSimpleRequest req = HttpSimpleRequestCoder.getInstance().decode(this.content); + WebRequest req = WebRequestCoder.getInstance().decode(this.content); if (req != null) { if (req.getCurrentUserid() == null) { req.setCurrentUserid(this.userid); diff --git a/src/main/java/org/redkale/mq/spi/HttpSimpleRequestCoder.java b/src/main/java/org/redkale/mq/spi/WebRequestCoder.java similarity index 90% rename from src/main/java/org/redkale/mq/spi/HttpSimpleRequestCoder.java rename to src/main/java/org/redkale/mq/spi/WebRequestCoder.java index 925af243a..db50accb4 100644 --- a/src/main/java/org/redkale/mq/spi/HttpSimpleRequestCoder.java +++ b/src/main/java/org/redkale/mq/spi/WebRequestCoder.java @@ -12,11 +12,11 @@ import java.util.Map; import org.redkale.convert.ConvertType; import org.redkale.net.http.HttpHeaders; import org.redkale.net.http.HttpParameters; -import org.redkale.net.http.HttpSimpleRequest; +import org.redkale.net.http.WebRequest; import org.redkale.util.Utility; /** - * HttpSimpleRequest的MessageCoder实现 + * WebRequest的MessageCoder实现 * *

* 详情见: https://redkale.org @@ -25,11 +25,11 @@ import org.redkale.util.Utility; * * @since 2.1.0 */ -public class HttpSimpleRequestCoder implements MessageCoder { +public class WebRequestCoder implements MessageCoder { - private static final HttpSimpleRequestCoder instance = new HttpSimpleRequestCoder(); + private static final WebRequestCoder instance = new WebRequestCoder(); - public static HttpSimpleRequestCoder getInstance() { + public static WebRequestCoder getInstance() { return instance; } @@ -40,7 +40,7 @@ public class HttpSimpleRequestCoder implements MessageCoder { } @Override - public byte[] encode(HttpSimpleRequest data) { + public byte[] encode(WebRequest data) { byte[] traceid = MessageCoder.getBytes(data.getTraceid());//short-string byte[] path = MessageCoder.getBytes(data.getPath()); //long-string byte[] contextPath = MessageCoder.getBytes(data.getContextPath()); //short-string @@ -141,12 +141,12 @@ public class HttpSimpleRequestCoder implements MessageCoder { } @Override - public HttpSimpleRequest decode(byte[] data) { + public WebRequest decode(byte[] data) { if (data == null) { return null; } ByteBuffer buffer = ByteBuffer.wrap(data); - HttpSimpleRequest req = new HttpSimpleRequest(); + WebRequest req = new WebRequest(); byte opt = buffer.get(); req.setRpc((opt & 0b01) > 0); int reqformat = buffer.getInt(); diff --git a/src/main/java/org/redkale/net/http/HttpRequest.java b/src/main/java/org/redkale/net/http/HttpRequest.java index acb93e7a7..e1c02bc4c 100644 --- a/src/main/java/org/redkale/net/http/HttpRequest.java +++ b/src/main/java/org/redkale/net/http/HttpRequest.java @@ -189,7 +189,7 @@ public class HttpRequest extends Request { } @SuppressWarnings("OverridableMethodCallInConstructor") - protected HttpRequest(HttpContext context, HttpSimpleRequest req) { + protected HttpRequest(HttpContext context, WebRequest req) { super(context); this.array = new ByteArray(); this.remoteAddrHeader = null; @@ -201,7 +201,7 @@ public class HttpRequest extends Request { } } - protected HttpRequest initSimpleRequest(HttpSimpleRequest req, boolean needPath) { + protected HttpRequest initSimpleRequest(WebRequest req, boolean needPath) { if (req != null) { this.rpc = req.rpc; this.traceid = req.traceid; @@ -233,8 +233,8 @@ public class HttpRequest extends Request { return this; } - public HttpSimpleRequest createSimpleRequest(String contextPath) { - HttpSimpleRequest req = new HttpSimpleRequest(); + public WebRequest createSimpleRequest(String contextPath) { + WebRequest req = new WebRequest(); req.setBody(array.length() == 0 ? null : array.getBytes()); if (!getHeaders().isEmpty()) { req.setHeaders(headers); diff --git a/src/main/java/org/redkale/net/http/HttpSimpleClient.java b/src/main/java/org/redkale/net/http/WebClient.java similarity index 93% rename from src/main/java/org/redkale/net/http/HttpSimpleClient.java rename to src/main/java/org/redkale/net/http/WebClient.java index e53ba6f21..1e964316e 100644 --- a/src/main/java/org/redkale/net/http/HttpSimpleClient.java +++ b/src/main/java/org/redkale/net/http/WebClient.java @@ -34,7 +34,7 @@ import org.redkale.util.*; * @since 2.3.0 * */ -public class HttpSimpleClient extends Client { +public class WebClient extends Client { public static final String USER_AGENT = "Redkale-http-client/" + Redkale.getDotedVersion(); @@ -48,7 +48,7 @@ public class HttpSimpleClient extends Client writeChannel(ClientConnection conn, HttpSimpleRequest request) { + protected CompletableFuture writeChannel(ClientConnection conn, WebRequest request) { return super.writeChannel(conn, request); } - public HttpSimpleClient readTimeoutSeconds(int readTimeoutSeconds) { + public WebClient readTimeoutSeconds(int readTimeoutSeconds) { this.readTimeoutSeconds = readTimeoutSeconds; return this; } - public HttpSimpleClient writeTimeoutSeconds(int writeTimeoutSeconds) { + public WebClient writeTimeoutSeconds(int writeTimeoutSeconds) { this.writeTimeoutSeconds = writeTimeoutSeconds; return this; } @@ -213,11 +213,11 @@ public class HttpSimpleClient extends Client> sendAsync(String url, HttpSimpleRequest req) { + public CompletableFuture> sendAsync(String url, WebRequest req) { return sendAsync(req.getMethod(), url, req.getHeaders(), req.getBody(), (Convert) null, null); } - public CompletableFuture> sendAsync(String url, HttpSimpleRequest req, Type valueType) { + public CompletableFuture> sendAsync(String url, WebRequest req, Type valueType) { return sendAsync(req.getMethod(), url, req.getHeaders(), req.getBody(), (Convert) null, null); } @@ -244,9 +244,9 @@ public class HttpSimpleClient extends Client 0 ? url.substring(urlpos) : "/"); if (!url.startsWith("https:")) { - HttpSimpleRequest req = HttpSimpleRequest.createPath(path, headers).method(method).body(body); + WebRequest req = WebRequest.createPath(path, headers).method(method).body(body); return (CompletableFuture) sendAsync(new InetSocketAddress(host, port), req) - .thenApply((HttpSimpleResult rs) -> { + .thenApply((WebResult rs) -> { if (valueType == null) { return rs; } else { @@ -261,7 +261,7 @@ public class HttpSimpleClient extends Client { +class WebCodec extends ClientCodec { - protected static final Logger logger = Logger.getLogger(HttpSimpleCodec.class.getSimpleName()); + protected static final Logger logger = Logger.getLogger(WebCodec.class.getSimpleName()); private ByteArray recyclableArray; private ByteArray halfBytes; - private HttpSimpleResult lastResult = null; + private WebResult lastResult = null; - public HttpSimpleCodec(HttpSimpleConnection connection) { + public WebCodec(WebConnection connection) { super(connection); } @@ -45,9 +45,9 @@ class HttpSimpleCodec extends ClientCodec { int rs; final ByteBuffer buffer = realBuf; while (buffer.hasRemaining()) { - HttpSimpleResult result = this.lastResult; + WebResult result = this.lastResult; if (result == null) { - result = new HttpSimpleResult(); + result = new WebResult(); result.readState = READ_STATE_ROUTE; this.lastResult = result; } @@ -95,7 +95,7 @@ class HttpSimpleCodec extends ClientCodec { } //解析 HTTP/1.1 200 OK - private int readStatusLine(final HttpSimpleResult result, final ByteBuffer buffer, final ByteArray array) { + private int readStatusLine(final WebResult result, final ByteBuffer buffer, final ByteArray array) { int remain = buffer.remaining(); if (array.length() > 0 && array.getLastByte() == '\r') { //array存在半截数据 if (buffer.get() != '\n') { @@ -129,7 +129,7 @@ class HttpSimpleCodec extends ClientCodec { //解析Header Connection: keep-alive //返回0表示解析完整,非0表示还需继续读数据 - private int readHeaderBytes(final HttpSimpleResult result, final ByteBuffer buffer, final ByteArray array) { + private int readHeaderBytes(final WebResult result, final ByteBuffer buffer, final ByteArray array) { byte b; while (buffer.hasRemaining()) { b = buffer.get(); @@ -147,7 +147,7 @@ class HttpSimpleCodec extends ClientCodec { return 1; } - private int readBody(final HttpSimpleResult result, final ByteBuffer buffer, final ByteArray array) { + private int readBody(final WebResult result, final ByteBuffer buffer, final ByteArray array) { if (result.contentLength >= 0) { array.put(buffer, Math.min((int) result.contentLength, buffer.remaining())); int lr = (int) result.contentLength - array.length(); @@ -159,7 +159,7 @@ class HttpSimpleCodec extends ClientCodec { return -1; } - private void readHeaderLines(final HttpSimpleResult result, ByteArray bytes) { + private void readHeaderLines(final WebResult result, ByteArray bytes) { int start = 0; int posC, posR; Charset charset = StandardCharsets.UTF_8; diff --git a/src/main/java/org/redkale/net/http/HttpSimpleConnection.java b/src/main/java/org/redkale/net/http/WebConnection.java similarity index 63% rename from src/main/java/org/redkale/net/http/HttpSimpleConnection.java rename to src/main/java/org/redkale/net/http/WebConnection.java index 595b5ee05..47cfed46e 100644 --- a/src/main/java/org/redkale/net/http/HttpSimpleConnection.java +++ b/src/main/java/org/redkale/net/http/WebConnection.java @@ -17,15 +17,15 @@ import org.redkale.net.client.ClientConnection; * * @since 2.8.0 */ -class HttpSimpleConnection extends ClientConnection { +class WebConnection extends ClientConnection { - public HttpSimpleConnection(HttpSimpleClient client, AsyncConnection channel) { + public WebConnection(WebClient client, AsyncConnection channel) { super(client, channel); } @Override protected ClientCodec createCodec() { - return new HttpSimpleCodec(this); + return new WebCodec(this); } } diff --git a/src/main/java/org/redkale/net/http/HttpSimpleRequest.java b/src/main/java/org/redkale/net/http/WebRequest.java similarity index 75% rename from src/main/java/org/redkale/net/http/HttpSimpleRequest.java rename to src/main/java/org/redkale/net/http/WebRequest.java index 4cdc2b5a8..c18415032 100644 --- a/src/main/java/org/redkale/net/http/HttpSimpleRequest.java +++ b/src/main/java/org/redkale/net/http/WebRequest.java @@ -16,7 +16,7 @@ import org.redkale.convert.*; import org.redkale.convert.json.JsonConvert; import org.redkale.net.client.ClientConnection; import org.redkale.net.client.ClientRequest; -import static org.redkale.net.http.HttpSimpleClient.*; +import static org.redkale.net.http.WebClient.*; import org.redkale.util.ByteArray; import org.redkale.util.Copier; import org.redkale.util.RedkaleException; @@ -34,9 +34,9 @@ import static org.redkale.util.Utility.isNotEmpty; * * @since 2.1.0 */ -public class HttpSimpleRequest extends ClientRequest implements java.io.Serializable { +public class WebRequest extends ClientRequest implements java.io.Serializable { - private static final Function copyFunc = Copier.func(HttpSimpleRequest.class, HttpSimpleRequest.class); + private static final Function copyFunc = Copier.func(WebRequest.class, WebRequest.class); @ConvertColumn(index = 12) @Comment("是否RPC请求, 该类通常是为RPC创建的,故默认是true") @@ -97,20 +97,20 @@ public class HttpSimpleRequest extends ClientRequest implements java.io.Serializ @Comment("http body信息") protected byte[] body; //对应HttpRequest.array - public static HttpSimpleRequest createPath(String path) { - return new HttpSimpleRequest().path(path).traceid(Traces.currentTraceid()); + public static WebRequest createPath(String path) { + return new WebRequest().path(path).traceid(Traces.currentTraceid()); } - public static HttpSimpleRequest createPath(String path, HttpHeaders header) { + public static WebRequest createPath(String path, HttpHeaders header) { return createPath(path).headers(header); } - public static HttpSimpleRequest createPath(String path, Object... params) { + public static WebRequest createPath(String path, Object... params) { return createPath(path, (HttpHeaders) null, params); } - public static HttpSimpleRequest createPath(String path, HttpHeaders header, Object... params) { - HttpSimpleRequest req = createPath(path).headers(header); + public static WebRequest createPath(String path, HttpHeaders header, Object... params) { + WebRequest req = createPath(path).headers(header); if (params.length > 0) { int len = params.length / 2; for (int i = 0; i < len; i++) { @@ -120,40 +120,40 @@ public class HttpSimpleRequest extends ClientRequest implements java.io.Serializ return req; } - public static HttpSimpleRequest createGetPath(String path) { + public static WebRequest createGetPath(String path) { return createPath(path).method("GET"); } - public static HttpSimpleRequest createGetPath(String path, HttpHeaders header) { + public static WebRequest createGetPath(String path, HttpHeaders header) { return createPath(path, header).method("GET"); } - public static HttpSimpleRequest createGetPath(String path, Object... params) { + public static WebRequest createGetPath(String path, Object... params) { return createPath(path, params).method("GET"); } - public static HttpSimpleRequest createGetPath(String path, HttpHeaders header, Object... params) { + public static WebRequest createGetPath(String path, HttpHeaders header, Object... params) { return createPath(path, header, params).method("GET"); } - public static HttpSimpleRequest createPostPath(String path) { + public static WebRequest createPostPath(String path) { return createPath(path).method("POST"); } - public static HttpSimpleRequest createPostPath(String path, HttpHeaders header) { + public static WebRequest createPostPath(String path, HttpHeaders header) { return createPath(path, header).method("POST"); } - public static HttpSimpleRequest createPostPath(String path, Object... params) { + public static WebRequest createPostPath(String path, Object... params) { return createPath(path, params).method("POST"); } - public static HttpSimpleRequest createPostPath(String path, HttpHeaders header, Object... params) { + public static WebRequest createPostPath(String path, HttpHeaders header, Object... params) { return createPath(path, header, params).method("POST"); } - public HttpSimpleRequest copy() { - HttpSimpleRequest rs = copyFunc.apply(this); + public WebRequest copy() { + WebRequest rs = copyFunc.apply(this); rs.workThread = this.workThread; rs.createTime = this.createTime; return rs; @@ -247,17 +247,17 @@ public class HttpSimpleRequest extends ClientRequest implements java.io.Serializ return this.contextPath + this.path; } - public HttpSimpleRequest formUrlencoded() { + public WebRequest formUrlencoded() { this.headers.set("Content-Type", "x-www-form-urlencoded"); return this; } - public HttpSimpleRequest rpc(boolean rpc) { + public WebRequest rpc(boolean rpc) { this.rpc = rpc; return this; } - public HttpSimpleRequest traceid(String traceid) { + public WebRequest traceid(String traceid) { if (traceid != null) { if (traceid.indexOf(' ') >= 0 || traceid.indexOf('\r') >= 0 || traceid.indexOf('\n') >= 0) { throw new RedkaleException("http-traceid(" + traceid + ") is illegal"); @@ -267,7 +267,7 @@ public class HttpSimpleRequest extends ClientRequest implements java.io.Serializ return this; } - public HttpSimpleRequest path(String path) { + public WebRequest path(String path) { if (path != null) { if (path.indexOf(' ') >= 0 || path.indexOf('\r') >= 0 || path.indexOf('\n') >= 0) { throw new RedkaleException("http-path(" + path + ") is illegal"); @@ -277,7 +277,7 @@ public class HttpSimpleRequest extends ClientRequest implements java.io.Serializ return this; } - public HttpSimpleRequest contextPath(String contextPath) { + public WebRequest contextPath(String contextPath) { if (contextPath != null) { if (contextPath.indexOf(' ') >= 0 || contextPath.indexOf('\r') >= 0 || contextPath.indexOf('\n') >= 0) { throw new RedkaleException("http-context-path(" + contextPath + ") is illegal"); @@ -287,72 +287,72 @@ public class HttpSimpleRequest extends ClientRequest implements java.io.Serializ return this; } - public HttpSimpleRequest bothConvertType(ConvertType convertType) { + public WebRequest bothConvertType(ConvertType convertType) { this.reqConvertType = convertType; this.respConvertType = convertType; return this; } - public HttpSimpleRequest reqConvertType(ConvertType reqConvertType) { + public WebRequest reqConvertType(ConvertType reqConvertType) { this.reqConvertType = reqConvertType; return this; } - public HttpSimpleRequest respConvertType(ConvertType respConvertType) { + public WebRequest respConvertType(ConvertType respConvertType) { this.respConvertType = respConvertType; return this; } - public HttpSimpleRequest remoteAddr(String remoteAddr) { + public WebRequest remoteAddr(String remoteAddr) { this.remoteAddr = remoteAddr; return this; } - public HttpSimpleRequest locale(String locale) { + public WebRequest locale(String locale) { this.locale = locale; return this; } - public HttpSimpleRequest sessionid(String sessionid) { + public WebRequest sessionid(String sessionid) { this.sessionid = sessionid; return this; } - public HttpSimpleRequest contentType(String contentType) { + public WebRequest contentType(String contentType) { this.contentType = contentType; return this; } - public HttpSimpleRequest currentUserid(Serializable userid) { + public WebRequest currentUserid(Serializable userid) { this.currentUserid = userid; return this; } - public HttpSimpleRequest removeHeader(String name) { + public WebRequest removeHeader(String name) { if (this.headers != null) { this.headers.remove(name); } return this; } - public HttpSimpleRequest removeParam(String name) { + public WebRequest removeParam(String name) { if (this.params != null) { this.params.remove(name); } return this; } - public HttpSimpleRequest headers(HttpHeaders header) { + public WebRequest headers(HttpHeaders header) { this.headers = header; return this; } - public HttpSimpleRequest params(HttpParameters params) { + public WebRequest params(HttpParameters params) { this.params = params; return this; } - public HttpSimpleRequest method(String method) { + public WebRequest method(String method) { if (method != null) { if (method.indexOf(' ') >= 0 || method.indexOf('\r') >= 0 || method.indexOf('\n') >= 0) { throw new RedkaleException("http-method(" + method + ") is illegal"); @@ -362,7 +362,7 @@ public class HttpSimpleRequest extends ClientRequest implements java.io.Serializ return this; } - public HttpSimpleRequest addHeader(String key, String value) { + public WebRequest addHeader(String key, String value) { if (this.headers == null) { this.headers = HttpHeaders.create(); } @@ -370,23 +370,23 @@ public class HttpSimpleRequest extends ClientRequest implements java.io.Serializ return this; } - public HttpSimpleRequest addHeader(String key, TextConvert convert, Object value) { + public WebRequest addHeader(String key, TextConvert convert, Object value) { return addHeader(key, (convert == null ? JsonConvert.root() : convert).convertTo(value)); } - public HttpSimpleRequest addHeader(String key, Object value) { + public WebRequest addHeader(String key, Object value) { return addHeader(key, JsonConvert.root().convertTo(value)); } - public HttpSimpleRequest addHeader(String key, int value) { + public WebRequest addHeader(String key, int value) { return addHeader(key, String.valueOf(value)); } - public HttpSimpleRequest addHeader(String key, long value) { + public WebRequest addHeader(String key, long value) { return addHeader(key, String.valueOf(value)); } - public HttpSimpleRequest setHeader(String key, String value) { + public WebRequest setHeader(String key, String value) { if (this.headers == null) { this.headers = HttpHeaders.create(); } @@ -394,23 +394,23 @@ public class HttpSimpleRequest extends ClientRequest implements java.io.Serializ return this; } - public HttpSimpleRequest setHeader(String key, TextConvert convert, Object value) { + public WebRequest setHeader(String key, TextConvert convert, Object value) { return setHeader(key, (convert == null ? JsonConvert.root() : convert).convertTo(value)); } - public HttpSimpleRequest setHeader(String key, Object value) { + public WebRequest setHeader(String key, Object value) { return setHeader(key, JsonConvert.root().convertTo(value)); } - public HttpSimpleRequest setHeader(String key, int value) { + public WebRequest setHeader(String key, int value) { return setHeader(key, String.valueOf(value)); } - public HttpSimpleRequest setHeader(String key, long value) { + public WebRequest setHeader(String key, long value) { return setHeader(key, String.valueOf(value)); } - public HttpSimpleRequest param(String key, String value) { + public WebRequest param(String key, String value) { if (this.params == null) { this.params = HttpParameters.create(); } @@ -418,7 +418,7 @@ public class HttpSimpleRequest extends ClientRequest implements java.io.Serializ return this; } - public HttpSimpleRequest param(String key, TextConvert convert, Object value) { + public WebRequest param(String key, TextConvert convert, Object value) { if (this.params == null) { this.params = HttpParameters.create(); } @@ -429,41 +429,41 @@ public class HttpSimpleRequest extends ClientRequest implements java.io.Serializ return this; } - public HttpSimpleRequest param(String key, Object value) { + public WebRequest param(String key, Object value) { return param(key, JsonConvert.root(), value); } - public HttpSimpleRequest body(byte[] body) { + public WebRequest body(byte[] body) { this.body = body; return this; } - public HttpSimpleRequest clearParams() { + public WebRequest clearParams() { this.params = null; return this; } - public HttpSimpleRequest clearHeaders() { + public WebRequest clearHeaders() { this.headers = null; return this; } - public HttpSimpleRequest clearRemoteAddr() { + public WebRequest clearRemoteAddr() { this.remoteAddr = null; return this; } - public HttpSimpleRequest clearLocale() { + public WebRequest clearLocale() { this.locale = null; return this; } - public HttpSimpleRequest clearSessionid() { + public WebRequest clearSessionid() { this.sessionid = null; return this; } - public HttpSimpleRequest clearContentType() { + public WebRequest clearContentType() { this.contentType = null; return this; } diff --git a/src/main/java/org/redkale/net/http/HttpSimpleResult.java b/src/main/java/org/redkale/net/http/WebResult.java similarity index 85% rename from src/main/java/org/redkale/net/http/HttpSimpleResult.java rename to src/main/java/org/redkale/net/http/WebResult.java index fb71dc365..cb574b979 100644 --- a/src/main/java/org/redkale/net/http/HttpSimpleResult.java +++ b/src/main/java/org/redkale/net/http/WebResult.java @@ -14,10 +14,11 @@ import org.redkale.net.client.ClientResult; * 详情见: https://redkale.org * * @author zhangjx + * @param T * * @since 2.8.0 */ -public class HttpSimpleResult extends HttpResult implements ClientResult { +public class WebResult extends HttpResult implements ClientResult { int readState; diff --git a/src/test/java/org/redkale/test/http/HttpSimpleClientTest.java b/src/test/java/org/redkale/test/http/HttpSimpleClientTest.java index 2ea3ce8c7..6d36ab497 100644 --- a/src/test/java/org/redkale/test/http/HttpSimpleClientTest.java +++ b/src/test/java/org/redkale/test/http/HttpSimpleClientTest.java @@ -11,8 +11,8 @@ import org.redkale.boot.Application; import org.redkale.inject.ResourceFactory; import org.redkale.net.AsyncIOGroup; import org.redkale.net.http.HttpServer; -import org.redkale.net.http.HttpSimpleClient; -import org.redkale.net.http.HttpSimpleRequest; +import org.redkale.net.http.WebClient; +import org.redkale.net.http.WebRequest; import org.redkale.util.AnyValueWriter; /** @@ -43,10 +43,10 @@ public class HttpSimpleClientTest { //Utility.sleep(50000); final AsyncIOGroup asyncGroup = new AsyncIOGroup(8192, 16); asyncGroup.start(); - HttpSimpleClient client = HttpSimpleClient.create(asyncGroup); + WebClient client = WebClient.create(asyncGroup); InetSocketAddress addr = new InetSocketAddress("127.0.0.1", port); { - HttpSimpleRequest req = HttpSimpleRequest.createPostPath("/test").param("id", 100); + WebRequest req = WebRequest.createPostPath("/test").param("id", 100); System.out.println(client.getAsync("http://127.0.0.1:" + port + req.getPath() + "?id=100").join()); System.out.println(client.sendAsync(addr, req).join()); } @@ -55,7 +55,7 @@ public class HttpSimpleClientTest { final CountDownLatch cdl = new CountDownLatch(count); for (int i = 100; i < 100 + count; i++) { final int index = i; - HttpSimpleRequest req = HttpSimpleRequest.createPostPath("/test").param("id", index); + WebRequest req = WebRequest.createPostPath("/test").param("id", index); client.getAsync("http://127.0.0.1:" + port + req.getPath() + "?id=" + index).whenComplete((v, t) -> { cdl.countDown(); Assertions.assertEquals("ok-" + index, new String((byte[]) v.getResult())); @@ -68,7 +68,7 @@ public class HttpSimpleClientTest { final CountDownLatch cdl = new CountDownLatch(count); for (int i = 100; i < 100 + count; i++) { final int index = i; - HttpSimpleRequest req = HttpSimpleRequest.createPostPath("/test").param("id", index); + WebRequest req = WebRequest.createPostPath("/test").param("id", index); client.sendAsync(addr, req).whenComplete((v, t) -> { cdl.countDown(); System.out.println("输出: " + new String((byte[]) v.getResult())); diff --git a/src/test/java/org/redkale/test/http/RequestCoderTest.java b/src/test/java/org/redkale/test/http/RequestCoderTest.java index 4fac7eaf2..cea40dd66 100644 --- a/src/test/java/org/redkale/test/http/RequestCoderTest.java +++ b/src/test/java/org/redkale/test/http/RequestCoderTest.java @@ -6,9 +6,9 @@ package org.redkale.test.http; import java.lang.reflect.Field; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -import org.redkale.mq.spi.HttpSimpleRequestCoder; +import org.redkale.mq.spi.WebRequestCoder; import org.redkale.net.client.ClientRequest; -import org.redkale.net.http.HttpSimpleRequest; +import org.redkale.net.http.WebRequest; /** * @@ -28,10 +28,10 @@ public class RequestCoderTest { @Test public void run1() throws Exception { - HttpSimpleRequest req1 = HttpSimpleRequest.createPostPath("/aaa"); + WebRequest req1 = WebRequest.createPostPath("/aaa"); System.out.println("simpleRequest1: " + req1); - byte[] bytes = HttpSimpleRequestCoder.getInstance().encode(req1); - HttpSimpleRequest req2 = HttpSimpleRequestCoder.getInstance().decode(bytes); + byte[] bytes = WebRequestCoder.getInstance().encode(req1); + WebRequest req2 = WebRequestCoder.getInstance().decode(bytes); Field timeFiedl = ClientRequest.class.getDeclaredField("createTime"); timeFiedl.setAccessible(true); timeFiedl.set(req2, req1.getCreateTime()); @@ -41,12 +41,12 @@ public class RequestCoderTest { @Test public void run2() throws Exception { - HttpSimpleRequest req1 = HttpSimpleRequest.createPostPath("/aaa"); + WebRequest req1 = WebRequest.createPostPath("/aaa"); req1.addHeader("X-aaa", "aaa"); req1.param("bean", "{}"); System.out.println("simpleRequest1: " + req1); - byte[] bytes = HttpSimpleRequestCoder.getInstance().encode(req1); - HttpSimpleRequest req2 = HttpSimpleRequestCoder.getInstance().decode(bytes); + byte[] bytes = WebRequestCoder.getInstance().encode(req1); + WebRequest req2 = WebRequestCoder.getInstance().decode(bytes); Field timeFiedl = ClientRequest.class.getDeclaredField("createTime"); timeFiedl.setAccessible(true); timeFiedl.set(req2, req1.getCreateTime()); @@ -56,14 +56,14 @@ public class RequestCoderTest { @Test public void run3() throws Exception { - HttpSimpleRequest req1 = HttpSimpleRequest.createPostPath("/aaa"); + WebRequest req1 = WebRequest.createPostPath("/aaa"); req1.addHeader("X-aaa", "aaa"); req1.addHeader("X-bbb", "bbb1"); req1.addHeader("X-bbb", "bbb2"); req1.param("bean", "{}"); System.out.println("simpleRequest1: " + req1); - byte[] bytes = HttpSimpleRequestCoder.getInstance().encode(req1); - HttpSimpleRequest req2 = HttpSimpleRequestCoder.getInstance().decode(bytes); + byte[] bytes = WebRequestCoder.getInstance().encode(req1); + WebRequest req2 = WebRequestCoder.getInstance().decode(bytes); Field timeFiedl = ClientRequest.class.getDeclaredField("createTime"); timeFiedl.setAccessible(true); timeFiedl.set(req2, req1.getCreateTime());