WebRequest

This commit is contained in:
redkale
2024-01-25 10:25:41 +08:00
parent 16a1e25f42
commit 4cd6d85bc1
16 changed files with 162 additions and 161 deletions

View File

@@ -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 {

View File

@@ -22,43 +22,43 @@ import org.redkale.util.RedkaleException;
*
* @since 2.1.0
*/
public abstract class HttpRpcClient implements ClusterRpcClient<HttpSimpleRequest, HttpResult<byte[]>> {
public abstract class HttpRpcClient implements ClusterRpcClient<WebRequest, HttpResult<byte[]>> {
@Override
public final CompletableFuture<Void> produceMessage(HttpSimpleRequest request) {
public final CompletableFuture<Void> produceMessage(WebRequest request) {
return produceMessage(generateHttpReqTopic(request, null), 0, null, request);
}
public final CompletableFuture<Void> produceMessage(Serializable userid, HttpSimpleRequest request) {
public final CompletableFuture<Void> produceMessage(Serializable userid, WebRequest request) {
return produceMessage(generateHttpReqTopic(request, null), userid, null, request);
}
public final CompletableFuture<Void> produceMessage(Serializable userid, String groupid, HttpSimpleRequest request) {
public final CompletableFuture<Void> produceMessage(Serializable userid, String groupid, WebRequest request) {
return produceMessage(generateHttpReqTopic(request, null), userid, groupid, request);
}
public final CompletableFuture<Void> produceMessage(String topic, HttpSimpleRequest request) {
public final CompletableFuture<Void> produceMessage(String topic, WebRequest request) {
return produceMessage(topic, 0, null, request);
}
@Override
public final CompletableFuture<HttpResult<byte[]>> sendMessage(HttpSimpleRequest request) {
public final CompletableFuture<HttpResult<byte[]>> sendMessage(WebRequest request) {
return sendMessage(generateHttpReqTopic(request, null), 0, null, request);
}
public final CompletableFuture<HttpResult<byte[]>> sendMessage(Serializable userid, HttpSimpleRequest request) {
public final CompletableFuture<HttpResult<byte[]>> sendMessage(Serializable userid, WebRequest request) {
return sendMessage(generateHttpReqTopic(request, null), userid, null, request);
}
public final CompletableFuture<HttpResult<byte[]>> sendMessage(Serializable userid, String groupid, HttpSimpleRequest request) {
public final CompletableFuture<HttpResult<byte[]>> sendMessage(Serializable userid, String groupid, WebRequest request) {
return sendMessage(generateHttpReqTopic(request, null), userid, groupid, request);
}
public final CompletableFuture<HttpResult<byte[]>> sendMessage(String topic, HttpSimpleRequest request) {
public final CompletableFuture<HttpResult<byte[]>> sendMessage(String topic, WebRequest request) {
return sendMessage(topic, 0, null, request);
}
public <T> CompletableFuture<T> sendMessage(HttpSimpleRequest request, Type type) {
public <T> CompletableFuture<T> sendMessage(WebRequest request, Type type) {
return sendMessage(generateHttpReqTopic(request, null), 0, null, request).thenApply((HttpResult<byte[]> httbs) -> {
if (!httbs.isSuccess()) {
throw new RedkaleException(httbs.getHeader("retinfo", "Internal Server Error"));
@@ -70,7 +70,7 @@ public abstract class HttpRpcClient implements ClusterRpcClient<HttpSimpleReques
});
}
public <T> CompletableFuture<T> sendMessage(Serializable userid, HttpSimpleRequest request, Type type) {
public <T> CompletableFuture<T> sendMessage(Serializable userid, WebRequest request, Type type) {
return sendMessage(generateHttpReqTopic(request, null), userid, null, request).thenApply((HttpResult<byte[]> httbs) -> {
if (!httbs.isSuccess()) {
throw new RedkaleException(httbs.getHeader("retinfo", "Internal Server Error"));
@@ -82,7 +82,7 @@ public abstract class HttpRpcClient implements ClusterRpcClient<HttpSimpleReques
});
}
public <T> CompletableFuture<T> sendMessage(Serializable userid, String groupid, HttpSimpleRequest request, Type type) {
public <T> CompletableFuture<T> sendMessage(Serializable userid, String groupid, WebRequest request, Type type) {
return sendMessage(generateHttpReqTopic(request, null), userid, groupid, request).thenApply((HttpResult<byte[]> httbs) -> {
if (!httbs.isSuccess()) {
throw new RedkaleException(httbs.getHeader("retinfo", "Internal Server Error"));
@@ -104,7 +104,7 @@ public abstract class HttpRpcClient implements ClusterRpcClient<HttpSimpleReques
return Rest.generateHttpReqTopic(module, resname, getNodeid());
}
public String generateHttpReqTopic(HttpSimpleRequest request, String path) {
public String generateHttpReqTopic(WebRequest request, String path) {
String module = request.getPath();
if (path != null && !path.isEmpty() && module.startsWith(path)) {
module = module.substring(path.length());
@@ -115,9 +115,9 @@ public abstract class HttpRpcClient implements ClusterRpcClient<HttpSimpleReques
return Rest.generateHttpReqTopic(module, resname, getNodeid());
}
public abstract CompletableFuture<HttpResult<byte[]>> sendMessage(String topic, Serializable userid, String groupid, HttpSimpleRequest request);
public abstract CompletableFuture<HttpResult<byte[]>> sendMessage(String topic, Serializable userid, String groupid, WebRequest request);
public abstract CompletableFuture<Void> produceMessage(String topic, Serializable userid, String groupid, HttpSimpleRequest request);
public abstract CompletableFuture<Void> produceMessage(String topic, Serializable userid, String groupid, WebRequest request);
protected abstract String getNodeid();

View File

@@ -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<HttpResult<byte[]>> sendMessage(String topic, Serializable userid, String groupid, HttpSimpleRequest request) {
public CompletableFuture<HttpResult<byte[]>> 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<Void> produceMessage(String topic, Serializable userid, String groupid, HttpSimpleRequest request) {
public CompletableFuture<Void> 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<HttpResult<byte[]>> httpAsync(boolean produce, Serializable userid, HttpSimpleRequest req) {
private CompletableFuture<HttpResult<byte[]>> 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<InetSocketAddress> addrs) {
protected InetSocketAddress randomAddress(WebRequest req, Set<InetSocketAddress> addrs) {
InetSocketAddress[] array = addrs.toArray(new InetSocketAddress[addrs.size()]);
return array[ThreadLocalRandom.current().nextInt(array.length)];
}
protected CompletableFuture<HttpResult<byte[]>> sendEachAddressAsync(HttpSimpleRequest req,
protected CompletableFuture<HttpResult<byte[]>> sendEachAddressAsync(WebRequest req,
String requestPath, final HttpHeaders clientHeaders, byte[] clientBody, Iterator<InetSocketAddress> it) {
if (!it.hasNext()) {
return new HttpResult<byte[]>().status(404).toFuture();

View File

@@ -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 <T> CompletableFuture<T> sendMessage(HttpSimpleRequest request, Type type) {
public <T> CompletableFuture<T> sendMessage(WebRequest request, Type type) {
return sendMessage((Serializable) null, (String) null, request, type);
}
@Override
public <T> CompletableFuture<T> sendMessage(Serializable userid, HttpSimpleRequest request, Type type) {
public <T> CompletableFuture<T> sendMessage(Serializable userid, WebRequest request, Type type) {
return sendMessage(userid, (String) null, request, type);
}
@Override
public <T> CompletableFuture<T> sendMessage(Serializable userid, String groupid, HttpSimpleRequest request, Type type) {
public <T> CompletableFuture<T> 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<HttpResult<byte[]>> sendMessage(String topic, Serializable userid, String groupid, HttpSimpleRequest request) {
public CompletableFuture<HttpResult<byte[]>> 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<Void> produceMessage(String topic, Serializable userid, String groupid, HttpSimpleRequest request) {
public CompletableFuture<Void> 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;

View File

@@ -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();

View File

@@ -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<HttpSimpleRequest> requestCoder = HttpSimpleRequestCoder.getInstance();
private final MessageCoder<WebRequest> requestCoder = WebRequestCoder.getInstance();
private final String nodeid;
@@ -28,14 +28,14 @@ final class HttpRpcMessageClient extends HttpRpcClient {
}
@Override
public CompletableFuture<HttpResult<byte[]>> sendMessage(String topic, Serializable userid, String groupid, HttpSimpleRequest request) {
public CompletableFuture<HttpResult<byte[]>> 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<Void> produceMessage(String topic, Serializable userid, String groupid, HttpSimpleRequest request) {
public CompletableFuture<Void> 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);

View File

@@ -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<byte[]>
@@ -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);

View File

@@ -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实现
*
* <p>
* 详情见: https://redkale.org
@@ -25,11 +25,11 @@ import org.redkale.util.Utility;
*
* @since 2.1.0
*/
public class HttpSimpleRequestCoder implements MessageCoder<HttpSimpleRequest> {
public class WebRequestCoder implements MessageCoder<WebRequest> {
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<HttpSimpleRequest> {
}
@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<HttpSimpleRequest> {
}
@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();

View File

@@ -189,7 +189,7 @@ public class HttpRequest extends Request<HttpContext> {
}
@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<HttpContext> {
}
}
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<HttpContext> {
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);

View File

@@ -34,7 +34,7 @@ import org.redkale.util.*;
* @since 2.3.0
*
*/
public class HttpSimpleClient extends Client<HttpSimpleConnection, HttpSimpleRequest, HttpSimpleResult> {
public class WebClient extends Client<WebConnection, WebRequest, WebResult> {
public static final String USER_AGENT = "Redkale-http-client/" + Redkale.getDotedVersion();
@@ -48,7 +48,7 @@ public class HttpSimpleClient extends Client<HttpSimpleConnection, HttpSimpleReq
protected ExecutorService workExecutor;
protected HttpSimpleClient(ExecutorService workExecutor, AsyncGroup asyncGroup) {
protected WebClient(ExecutorService workExecutor, AsyncGroup asyncGroup) {
super("Redkale-http-client", asyncGroup, new ClientAddress(new InetSocketAddress("127.0.0.1", 0)));
this.workExecutor = workExecutor;
this.asyncGroup = asyncGroup;
@@ -57,30 +57,30 @@ public class HttpSimpleClient extends Client<HttpSimpleConnection, HttpSimpleReq
this.writeTimeoutSeconds = 6;
}
public static HttpSimpleClient create(ExecutorService workExecutor, AsyncGroup asyncGroup) {
return new HttpSimpleClient(workExecutor, asyncGroup);
public static WebClient create(ExecutorService workExecutor, AsyncGroup asyncGroup) {
return new WebClient(workExecutor, asyncGroup);
}
public static HttpSimpleClient create(AsyncGroup asyncGroup) {
public static WebClient create(AsyncGroup asyncGroup) {
return create(null, asyncGroup);
}
@Override
protected HttpSimpleConnection createClientConnection(AsyncConnection channel) {
return new HttpSimpleConnection(this, channel);
protected WebConnection createClientConnection(AsyncConnection channel) {
return new WebConnection(this, channel);
}
@Override
protected CompletableFuture<HttpSimpleResult> writeChannel(ClientConnection conn, HttpSimpleRequest request) {
protected CompletableFuture<WebResult> 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<HttpSimpleConnection, HttpSimpleReq
return sendAsync("POST", url, headers, body);
}
public CompletableFuture<HttpResult<byte[]>> sendAsync(String url, HttpSimpleRequest req) {
public CompletableFuture<HttpResult<byte[]>> sendAsync(String url, WebRequest req) {
return sendAsync(req.getMethod(), url, req.getHeaders(), req.getBody(), (Convert) null, null);
}
public <T> CompletableFuture<HttpResult<T>> sendAsync(String url, HttpSimpleRequest req, Type valueType) {
public <T> CompletableFuture<HttpResult<T>> 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<HttpSimpleConnection, HttpSimpleReq
int urlpos = url.indexOf("/", url.indexOf("//") + 3);
final String path = (urlpos > 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<HttpSimpleConnection, HttpSimpleReq
array.put((method.toUpperCase() + " " + path + " HTTP/1.1\r\n").getBytes(StandardCharsets.UTF_8));
array.put(("Host: " + uri.getHost() + "\r\n").getBytes(StandardCharsets.UTF_8));
array.put(HttpSimpleRequest.contentLengthBytes(body));
array.put(WebRequest.contentLengthBytes(body));
if (headers == null || !headers.contains("User-Agent")) {
array.put(header_bytes_useragent);
}
@@ -318,7 +318,7 @@ public class HttpSimpleClient extends Client<HttpSimpleConnection, HttpSimpleReq
// final AsyncIOGroup asyncGroup = new AsyncIOGroup(8192, 16);
// asyncGroup.start();
// String url = "http://redkale.org";
// HttpSimpleClient client = HttpSimpleClient.createPostPath(asyncGroup);
// WebClient client = WebClient.createPostPath(asyncGroup);
// (System.out).println(client.getAsync(url).join());
// }
//

View File

@@ -15,17 +15,17 @@ import org.redkale.util.ByteArray;
*
* @author zhangjx
*/
class HttpSimpleCodec extends ClientCodec<HttpSimpleRequest, HttpSimpleResult> {
class WebCodec extends ClientCodec<WebRequest, WebResult> {
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<HttpSimpleRequest, HttpSimpleResult> {
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<HttpSimpleRequest, HttpSimpleResult> {
}
//解析 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<HttpSimpleRequest, HttpSimpleResult> {
//解析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<HttpSimpleRequest, HttpSimpleResult> {
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<HttpSimpleRequest, HttpSimpleResult> {
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;

View File

@@ -17,15 +17,15 @@ import org.redkale.net.client.ClientConnection;
*
* @since 2.8.0
*/
class HttpSimpleConnection extends ClientConnection<HttpSimpleRequest, HttpSimpleResult> {
class WebConnection extends ClientConnection<WebRequest, WebResult> {
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);
}
}

View File

@@ -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<HttpSimpleRequest, HttpSimpleRequest> copyFunc = Copier.func(HttpSimpleRequest.class, HttpSimpleRequest.class);
private static final Function<WebRequest, WebRequest> 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;
}

View File

@@ -14,10 +14,11 @@ import org.redkale.net.client.ClientResult;
* 详情见: https://redkale.org
*
* @author zhangjx
* @param <T> T
*
* @since 2.8.0
*/
public class HttpSimpleResult<T> extends HttpResult<T> implements ClientResult {
public class WebResult<T> extends HttpResult<T> implements ClientResult {
int readState;

View File

@@ -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()));

View File

@@ -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());