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; return null;
} }
}, java.net.http.HttpClient.class); }, java.net.http.HttpClient.class);
//------------------------------------ 注册 HttpSimpleClient ------------------------------------ //------------------------------------ 注册 WebClient ------------------------------------
resourceFactory.register((ResourceFactory rf, String srcResourceName, Object srcObj, String resourceName, Field field, Object attachment) -> { resourceFactory.register((ResourceFactory rf, String srcResourceName, Object srcObj, String resourceName, Field field, Object attachment) -> {
try { try {
HttpSimpleClient httpClient = HttpSimpleClient.create(workExecutor, clientAsyncGroup); WebClient httpClient = WebClient.create(workExecutor, clientAsyncGroup);
field.set(srcObj, httpClient); field.set(srcObj, httpClient);
rf.inject(resourceName, httpClient, null); // 给其可能包含@Resource的字段赋值; rf.inject(resourceName, httpClient, null); // 给其可能包含@Resource的字段赋值;
rf.register(resourceName, HttpSimpleClient.class, httpClient); rf.register(resourceName, WebClient.class, httpClient);
return httpClient; return httpClient;
} catch (Exception e) { } 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; return null;
} }
}, HttpSimpleClient.class); }, WebClient.class);
//------------------------------------ 注册 HttpRpcClient ------------------------------------ //------------------------------------ 注册 HttpRpcClient ------------------------------------
resourceFactory.register((ResourceFactory rf, String srcResourceName, Object srcObj, String resourceName, Field field, Object attachment) -> { resourceFactory.register((ResourceFactory rf, String srcResourceName, Object srcObj, String resourceName, Field field, Object attachment) -> {
try { try {

View File

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

View File

@@ -42,7 +42,7 @@ public class HttpClusterRpcClient extends HttpRpcClient {
protected ClusterAgent clusterAgent; protected ClusterAgent clusterAgent;
@Resource(name = "cluster.httpClient", required = false) @Resource(name = "cluster.httpClient", required = false)
protected HttpSimpleClient httpSimpleClient; protected WebClient webClient;
@Resource(name = "cluster.httpClient", required = false) @Resource(name = "cluster.httpClient", required = false)
protected java.net.http.HttpClient httpClient; protected java.net.http.HttpClient httpClient;
@@ -59,7 +59,7 @@ public class HttpClusterRpcClient extends HttpRpcClient {
} }
@Override @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)) { if (topicServletMap.computeIfAbsent(topic, t -> localClient.findHttpServlet(t) != null)) {
return localClient.sendMessage(topic, userid, groupid, request); return localClient.sendMessage(topic, userid, groupid, request);
} else { } else {
@@ -68,7 +68,7 @@ public class HttpClusterRpcClient extends HttpRpcClient {
} }
@Override @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)) { if (topicServletMap.computeIfAbsent(topic, t -> localClient.findHttpServlet(t) != null)) {
return localClient.produceMessage(topic, userid, groupid, request); return localClient.produceMessage(topic, userid, groupid, request);
} else { } 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())); req.setTraceid(Traces.computeIfAbsent(req.getTraceid(), Traces.currentTraceid()));
String module = req.getPath(); String module = req.getPath();
module = module.substring(1, module.indexOf('/', 1)); 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()); clientHeaders.set(Rest.REST_HEADER_RESP_CONVERT, req.getRespConvertType().toString());
} }
if (httpSimpleClient != null) { if (webClient != null) {
HttpSimpleRequest newReq = req.copy().headers(clientHeaders); WebRequest newReq = req.copy().headers(clientHeaders);
InetSocketAddress addr = randomAddress(newReq, addrs); InetSocketAddress addr = randomAddress(newReq, addrs);
if (logger.isLoggable(Level.FINEST)) { if (logger.isLoggable(Level.FINEST)) {
logger.log(Level.FINEST, "httpAsync: module=" + localModule + ", resname=" + resname + ", addr=" + addr); 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; byte[] clientBody = null;
if (isNotEmpty(req.getBody())) { 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()]); InetSocketAddress[] array = addrs.toArray(new InetSocketAddress[addrs.size()]);
return array[ThreadLocalRandom.current().nextInt(array.length)]; 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) { String requestPath, final HttpHeaders clientHeaders, byte[] clientBody, Iterator<InetSocketAddress> it) {
if (!it.hasNext()) { if (!it.hasNext()) {
return new HttpResult<byte[]>().status(404).toFuture(); return new HttpResult<byte[]>().status(404).toFuture();

View File

@@ -89,22 +89,22 @@ public class HttpLocalRpcClient extends HttpRpcClient {
return dispatcherServlet().findServletByTopic(topic); return dispatcherServlet().findServletByTopic(topic);
} }
public HttpServlet findHttpServlet(HttpSimpleRequest request) { public HttpServlet findHttpServlet(WebRequest request) {
return dispatcherServlet().findServletByTopic(generateHttpReqTopic(request, request.getContextPath())); return dispatcherServlet().findServletByTopic(generateHttpReqTopic(request, request.getContextPath()));
} }
@Override @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); return sendMessage((Serializable) null, (String) null, request, type);
} }
@Override @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); return sendMessage(userid, (String) null, request, type);
} }
@Override @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())) { if (isEmpty(request.getTraceid())) {
request.setTraceid(Traces.currentTraceid()); request.setTraceid(Traces.currentTraceid());
} }
@@ -129,7 +129,7 @@ public class HttpLocalRpcClient extends HttpRpcClient {
} }
@Override @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())) { if (isEmpty(request.getTraceid())) {
request.setTraceid(Traces.currentTraceid()); request.setTraceid(Traces.currentTraceid());
} }
@@ -166,7 +166,7 @@ public class HttpLocalRpcClient extends HttpRpcClient {
} }
@Override @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(); CompletableFuture future = new CompletableFuture();
HttpDispatcherServlet ps = dispatcherServlet(); HttpDispatcherServlet ps = dispatcherServlet();
HttpServlet servlet = ps.findServletByTopic(topic); HttpServlet servlet = ps.findServletByTopic(topic);
@@ -192,7 +192,7 @@ public class HttpLocalRpcClient extends HttpRpcClient {
public static class HttpMessageLocalRequest extends HttpRequest { 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); super(context, req);
if (userid != null) { if (userid != null) {
this.currentUserid = userid; this.currentUserid = userid;

View File

@@ -26,14 +26,14 @@ public class HttpMessageRequest extends HttpRequest {
} }
public HttpMessageRequest(HttpContext context, MessageRecord message) { public HttpMessageRequest(HttpContext context, MessageRecord message) {
super(context, (HttpSimpleRequest) null); super(context, (WebRequest) null);
if (message != null) { if (message != null) {
prepare(message); prepare(message);
} }
} }
protected HttpMessageRequest prepare(MessageRecord message) { protected HttpMessageRequest prepare(MessageRecord message) {
super.initSimpleRequest(message.decodeContent(HttpSimpleRequestCoder.getInstance()), false); super.initSimpleRequest(message.decodeContent(WebRequestCoder.getInstance()), false);
this.message = message; this.message = message;
this.currentUserid = message.getUserid(); this.currentUserid = message.getUserid();
this.createTime = System.currentTimeMillis(); this.createTime = System.currentTimeMillis();

View File

@@ -8,7 +8,7 @@ import java.util.concurrent.CompletableFuture;
import org.redkale.cluster.HttpRpcClient; import org.redkale.cluster.HttpRpcClient;
import static org.redkale.mq.spi.MessageRecord.CTYPE_HTTP_REQUEST; import static org.redkale.mq.spi.MessageRecord.CTYPE_HTTP_REQUEST;
import org.redkale.net.http.HttpResult; 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 { final class HttpRpcMessageClient extends HttpRpcClient {
private final MessageCoder<HttpSimpleRequest> requestCoder = HttpSimpleRequestCoder.getInstance(); private final MessageCoder<WebRequest> requestCoder = WebRequestCoder.getInstance();
private final String nodeid; private final String nodeid;
@@ -28,14 +28,14 @@ final class HttpRpcMessageClient extends HttpRpcClient {
} }
@Override @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)); MessageRecord message = messageClient.createMessageRecord(CTYPE_HTTP_REQUEST, topic, null, request.getTraceid(), requestCoder.encode(request));
message.userid(userid).groupid(groupid); message.userid(userid).groupid(groupid);
return messageClient.sendMessage(message).thenApply(r -> r.decodeContent(HttpResultCoder.getInstance())); return messageClient.sendMessage(message).thenApply(r -> r.decodeContent(HttpResultCoder.getInstance()));
} }
@Override @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)); MessageRecord message = messageClient.createMessageRecord(CTYPE_HTTP_REQUEST, topic, null, request.getTraceid(), requestCoder.encode(request));
message.userid(userid).groupid(groupid); message.userid(userid).groupid(groupid);
return messageClient.produceMessage(message); return messageClient.produceMessage(message);

View File

@@ -11,7 +11,7 @@ import java.util.Arrays;
import org.redkale.annotation.Comment; import org.redkale.annotation.Comment;
import org.redkale.convert.*; import org.redkale.convert.*;
import org.redkale.convert.json.JsonConvert; 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.http.WebSocketPacket;
import org.redkale.net.sncp.SncpHeader; import org.redkale.net.sncp.SncpHeader;
import org.redkale.util.RedkaleException; import org.redkale.util.RedkaleException;
@@ -38,7 +38,7 @@ public class MessageRecord implements Serializable {
//Bson bytes //Bson bytes
public static final byte CTYPE_BSON = 2; public static final byte CTYPE_BSON = 2;
//HttpSimpleRequest //WebRequest
public static final byte CTYPE_HTTP_REQUEST = 3; public static final byte CTYPE_HTTP_REQUEST = 3;
//HttpResult<byte[]> //HttpResult<byte[]>
@@ -336,7 +336,7 @@ public class MessageRecord implements Serializable {
//SncpHeader包含不确定长度的信息故不能再直接偏移读取 //SncpHeader包含不确定长度的信息故不能再直接偏移读取
sb.append(",\"content\":").append("bytes[" + this.content.length + "]"); sb.append(",\"content\":").append("bytes[" + this.content.length + "]");
} else if (this.ctype == CTYPE_HTTP_REQUEST) { } 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 != null) {
if (req.getCurrentUserid() == null) { if (req.getCurrentUserid() == null) {
req.setCurrentUserid(this.userid); req.setCurrentUserid(this.userid);

View File

@@ -12,11 +12,11 @@ import java.util.Map;
import org.redkale.convert.ConvertType; import org.redkale.convert.ConvertType;
import org.redkale.net.http.HttpHeaders; import org.redkale.net.http.HttpHeaders;
import org.redkale.net.http.HttpParameters; import org.redkale.net.http.HttpParameters;
import org.redkale.net.http.HttpSimpleRequest; import org.redkale.net.http.WebRequest;
import org.redkale.util.Utility; import org.redkale.util.Utility;
/** /**
* HttpSimpleRequest的MessageCoder实现 * WebRequest的MessageCoder实现
* *
* <p> * <p>
* 详情见: https://redkale.org * 详情见: https://redkale.org
@@ -25,11 +25,11 @@ import org.redkale.util.Utility;
* *
* @since 2.1.0 * @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; return instance;
} }
@@ -40,7 +40,7 @@ public class HttpSimpleRequestCoder implements MessageCoder<HttpSimpleRequest> {
} }
@Override @Override
public byte[] encode(HttpSimpleRequest data) { public byte[] encode(WebRequest data) {
byte[] traceid = MessageCoder.getBytes(data.getTraceid());//short-string byte[] traceid = MessageCoder.getBytes(data.getTraceid());//short-string
byte[] path = MessageCoder.getBytes(data.getPath()); //long-string byte[] path = MessageCoder.getBytes(data.getPath()); //long-string
byte[] contextPath = MessageCoder.getBytes(data.getContextPath()); //short-string byte[] contextPath = MessageCoder.getBytes(data.getContextPath()); //short-string
@@ -141,12 +141,12 @@ public class HttpSimpleRequestCoder implements MessageCoder<HttpSimpleRequest> {
} }
@Override @Override
public HttpSimpleRequest decode(byte[] data) { public WebRequest decode(byte[] data) {
if (data == null) { if (data == null) {
return null; return null;
} }
ByteBuffer buffer = ByteBuffer.wrap(data); ByteBuffer buffer = ByteBuffer.wrap(data);
HttpSimpleRequest req = new HttpSimpleRequest(); WebRequest req = new WebRequest();
byte opt = buffer.get(); byte opt = buffer.get();
req.setRpc((opt & 0b01) > 0); req.setRpc((opt & 0b01) > 0);
int reqformat = buffer.getInt(); int reqformat = buffer.getInt();

View File

@@ -189,7 +189,7 @@ public class HttpRequest extends Request<HttpContext> {
} }
@SuppressWarnings("OverridableMethodCallInConstructor") @SuppressWarnings("OverridableMethodCallInConstructor")
protected HttpRequest(HttpContext context, HttpSimpleRequest req) { protected HttpRequest(HttpContext context, WebRequest req) {
super(context); super(context);
this.array = new ByteArray(); this.array = new ByteArray();
this.remoteAddrHeader = null; 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) { if (req != null) {
this.rpc = req.rpc; this.rpc = req.rpc;
this.traceid = req.traceid; this.traceid = req.traceid;
@@ -233,8 +233,8 @@ public class HttpRequest extends Request<HttpContext> {
return this; return this;
} }
public HttpSimpleRequest createSimpleRequest(String contextPath) { public WebRequest createSimpleRequest(String contextPath) {
HttpSimpleRequest req = new HttpSimpleRequest(); WebRequest req = new WebRequest();
req.setBody(array.length() == 0 ? null : array.getBytes()); req.setBody(array.length() == 0 ? null : array.getBytes());
if (!getHeaders().isEmpty()) { if (!getHeaders().isEmpty()) {
req.setHeaders(headers); req.setHeaders(headers);

View File

@@ -34,7 +34,7 @@ import org.redkale.util.*;
* @since 2.3.0 * @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(); 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 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))); super("Redkale-http-client", asyncGroup, new ClientAddress(new InetSocketAddress("127.0.0.1", 0)));
this.workExecutor = workExecutor; this.workExecutor = workExecutor;
this.asyncGroup = asyncGroup; this.asyncGroup = asyncGroup;
@@ -57,30 +57,30 @@ public class HttpSimpleClient extends Client<HttpSimpleConnection, HttpSimpleReq
this.writeTimeoutSeconds = 6; this.writeTimeoutSeconds = 6;
} }
public static HttpSimpleClient create(ExecutorService workExecutor, AsyncGroup asyncGroup) { public static WebClient create(ExecutorService workExecutor, AsyncGroup asyncGroup) {
return new HttpSimpleClient(workExecutor, asyncGroup); return new WebClient(workExecutor, asyncGroup);
} }
public static HttpSimpleClient create(AsyncGroup asyncGroup) { public static WebClient create(AsyncGroup asyncGroup) {
return create(null, asyncGroup); return create(null, asyncGroup);
} }
@Override @Override
protected HttpSimpleConnection createClientConnection(AsyncConnection channel) { protected WebConnection createClientConnection(AsyncConnection channel) {
return new HttpSimpleConnection(this, channel); return new WebConnection(this, channel);
} }
@Override @Override
protected CompletableFuture<HttpSimpleResult> writeChannel(ClientConnection conn, HttpSimpleRequest request) { protected CompletableFuture<WebResult> writeChannel(ClientConnection conn, WebRequest request) {
return super.writeChannel(conn, request); return super.writeChannel(conn, request);
} }
public HttpSimpleClient readTimeoutSeconds(int readTimeoutSeconds) { public WebClient readTimeoutSeconds(int readTimeoutSeconds) {
this.readTimeoutSeconds = readTimeoutSeconds; this.readTimeoutSeconds = readTimeoutSeconds;
return this; return this;
} }
public HttpSimpleClient writeTimeoutSeconds(int writeTimeoutSeconds) { public WebClient writeTimeoutSeconds(int writeTimeoutSeconds) {
this.writeTimeoutSeconds = writeTimeoutSeconds; this.writeTimeoutSeconds = writeTimeoutSeconds;
return this; return this;
} }
@@ -213,11 +213,11 @@ public class HttpSimpleClient extends Client<HttpSimpleConnection, HttpSimpleReq
return sendAsync("POST", url, headers, body); 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); 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); 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); int urlpos = url.indexOf("/", url.indexOf("//") + 3);
final String path = (urlpos > 0 ? url.substring(urlpos) : "/"); final String path = (urlpos > 0 ? url.substring(urlpos) : "/");
if (!url.startsWith("https:")) { 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) return (CompletableFuture) sendAsync(new InetSocketAddress(host, port), req)
.thenApply((HttpSimpleResult rs) -> { .thenApply((WebResult rs) -> {
if (valueType == null) { if (valueType == null) {
return rs; return rs;
} else { } 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((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(("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")) { if (headers == null || !headers.contains("User-Agent")) {
array.put(header_bytes_useragent); array.put(header_bytes_useragent);
} }
@@ -318,7 +318,7 @@ public class HttpSimpleClient extends Client<HttpSimpleConnection, HttpSimpleReq
// final AsyncIOGroup asyncGroup = new AsyncIOGroup(8192, 16); // final AsyncIOGroup asyncGroup = new AsyncIOGroup(8192, 16);
// asyncGroup.start(); // asyncGroup.start();
// String url = "http://redkale.org"; // String url = "http://redkale.org";
// HttpSimpleClient client = HttpSimpleClient.createPostPath(asyncGroup); // WebClient client = WebClient.createPostPath(asyncGroup);
// (System.out).println(client.getAsync(url).join()); // (System.out).println(client.getAsync(url).join());
// } // }
// //

View File

@@ -15,17 +15,17 @@ import org.redkale.util.ByteArray;
* *
* @author zhangjx * @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 recyclableArray;
private ByteArray halfBytes; private ByteArray halfBytes;
private HttpSimpleResult lastResult = null; private WebResult lastResult = null;
public HttpSimpleCodec(HttpSimpleConnection connection) { public WebCodec(WebConnection connection) {
super(connection); super(connection);
} }
@@ -45,9 +45,9 @@ class HttpSimpleCodec extends ClientCodec<HttpSimpleRequest, HttpSimpleResult> {
int rs; int rs;
final ByteBuffer buffer = realBuf; final ByteBuffer buffer = realBuf;
while (buffer.hasRemaining()) { while (buffer.hasRemaining()) {
HttpSimpleResult result = this.lastResult; WebResult result = this.lastResult;
if (result == null) { if (result == null) {
result = new HttpSimpleResult(); result = new WebResult();
result.readState = READ_STATE_ROUTE; result.readState = READ_STATE_ROUTE;
this.lastResult = result; this.lastResult = result;
} }
@@ -95,7 +95,7 @@ class HttpSimpleCodec extends ClientCodec<HttpSimpleRequest, HttpSimpleResult> {
} }
//解析 HTTP/1.1 200 OK //解析 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(); int remain = buffer.remaining();
if (array.length() > 0 && array.getLastByte() == '\r') { //array存在半截数据 if (array.length() > 0 && array.getLastByte() == '\r') { //array存在半截数据
if (buffer.get() != '\n') { if (buffer.get() != '\n') {
@@ -129,7 +129,7 @@ class HttpSimpleCodec extends ClientCodec<HttpSimpleRequest, HttpSimpleResult> {
//解析Header Connection: keep-alive //解析Header Connection: keep-alive
//返回0表示解析完整非0表示还需继续读数据 //返回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; byte b;
while (buffer.hasRemaining()) { while (buffer.hasRemaining()) {
b = buffer.get(); b = buffer.get();
@@ -147,7 +147,7 @@ class HttpSimpleCodec extends ClientCodec<HttpSimpleRequest, HttpSimpleResult> {
return 1; 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) { if (result.contentLength >= 0) {
array.put(buffer, Math.min((int) result.contentLength, buffer.remaining())); array.put(buffer, Math.min((int) result.contentLength, buffer.remaining()));
int lr = (int) result.contentLength - array.length(); int lr = (int) result.contentLength - array.length();
@@ -159,7 +159,7 @@ class HttpSimpleCodec extends ClientCodec<HttpSimpleRequest, HttpSimpleResult> {
return -1; return -1;
} }
private void readHeaderLines(final HttpSimpleResult result, ByteArray bytes) { private void readHeaderLines(final WebResult result, ByteArray bytes) {
int start = 0; int start = 0;
int posC, posR; int posC, posR;
Charset charset = StandardCharsets.UTF_8; Charset charset = StandardCharsets.UTF_8;

View File

@@ -17,15 +17,15 @@ import org.redkale.net.client.ClientConnection;
* *
* @since 2.8.0 * @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); super(client, channel);
} }
@Override @Override
protected ClientCodec createCodec() { 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.convert.json.JsonConvert;
import org.redkale.net.client.ClientConnection; import org.redkale.net.client.ClientConnection;
import org.redkale.net.client.ClientRequest; 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.ByteArray;
import org.redkale.util.Copier; import org.redkale.util.Copier;
import org.redkale.util.RedkaleException; import org.redkale.util.RedkaleException;
@@ -34,9 +34,9 @@ import static org.redkale.util.Utility.isNotEmpty;
* *
* @since 2.1.0 * @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) @ConvertColumn(index = 12)
@Comment("是否RPC请求, 该类通常是为RPC创建的故默认是true") @Comment("是否RPC请求, 该类通常是为RPC创建的故默认是true")
@@ -97,20 +97,20 @@ public class HttpSimpleRequest extends ClientRequest implements java.io.Serializ
@Comment("http body信息") @Comment("http body信息")
protected byte[] body; //对应HttpRequest.array protected byte[] body; //对应HttpRequest.array
public static HttpSimpleRequest createPath(String path) { public static WebRequest createPath(String path) {
return new HttpSimpleRequest().path(path).traceid(Traces.currentTraceid()); 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); 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); return createPath(path, (HttpHeaders) null, params);
} }
public static HttpSimpleRequest createPath(String path, HttpHeaders header, Object... params) { public static WebRequest createPath(String path, HttpHeaders header, Object... params) {
HttpSimpleRequest req = createPath(path).headers(header); WebRequest req = createPath(path).headers(header);
if (params.length > 0) { if (params.length > 0) {
int len = params.length / 2; int len = params.length / 2;
for (int i = 0; i < len; i++) { for (int i = 0; i < len; i++) {
@@ -120,40 +120,40 @@ public class HttpSimpleRequest extends ClientRequest implements java.io.Serializ
return req; return req;
} }
public static HttpSimpleRequest createGetPath(String path) { public static WebRequest createGetPath(String path) {
return createPath(path).method("GET"); 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"); 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"); 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"); return createPath(path, header, params).method("GET");
} }
public static HttpSimpleRequest createPostPath(String path) { public static WebRequest createPostPath(String path) {
return createPath(path).method("POST"); 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"); 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"); 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"); return createPath(path, header, params).method("POST");
} }
public HttpSimpleRequest copy() { public WebRequest copy() {
HttpSimpleRequest rs = copyFunc.apply(this); WebRequest rs = copyFunc.apply(this);
rs.workThread = this.workThread; rs.workThread = this.workThread;
rs.createTime = this.createTime; rs.createTime = this.createTime;
return rs; return rs;
@@ -247,17 +247,17 @@ public class HttpSimpleRequest extends ClientRequest implements java.io.Serializ
return this.contextPath + this.path; return this.contextPath + this.path;
} }
public HttpSimpleRequest formUrlencoded() { public WebRequest formUrlencoded() {
this.headers.set("Content-Type", "x-www-form-urlencoded"); this.headers.set("Content-Type", "x-www-form-urlencoded");
return this; return this;
} }
public HttpSimpleRequest rpc(boolean rpc) { public WebRequest rpc(boolean rpc) {
this.rpc = rpc; this.rpc = rpc;
return this; return this;
} }
public HttpSimpleRequest traceid(String traceid) { public WebRequest traceid(String traceid) {
if (traceid != null) { if (traceid != null) {
if (traceid.indexOf(' ') >= 0 || traceid.indexOf('\r') >= 0 || traceid.indexOf('\n') >= 0) { if (traceid.indexOf(' ') >= 0 || traceid.indexOf('\r') >= 0 || traceid.indexOf('\n') >= 0) {
throw new RedkaleException("http-traceid(" + traceid + ") is illegal"); throw new RedkaleException("http-traceid(" + traceid + ") is illegal");
@@ -267,7 +267,7 @@ public class HttpSimpleRequest extends ClientRequest implements java.io.Serializ
return this; return this;
} }
public HttpSimpleRequest path(String path) { public WebRequest path(String path) {
if (path != null) { if (path != null) {
if (path.indexOf(' ') >= 0 || path.indexOf('\r') >= 0 || path.indexOf('\n') >= 0) { if (path.indexOf(' ') >= 0 || path.indexOf('\r') >= 0 || path.indexOf('\n') >= 0) {
throw new RedkaleException("http-path(" + path + ") is illegal"); throw new RedkaleException("http-path(" + path + ") is illegal");
@@ -277,7 +277,7 @@ public class HttpSimpleRequest extends ClientRequest implements java.io.Serializ
return this; return this;
} }
public HttpSimpleRequest contextPath(String contextPath) { public WebRequest contextPath(String contextPath) {
if (contextPath != null) { if (contextPath != null) {
if (contextPath.indexOf(' ') >= 0 || contextPath.indexOf('\r') >= 0 || contextPath.indexOf('\n') >= 0) { if (contextPath.indexOf(' ') >= 0 || contextPath.indexOf('\r') >= 0 || contextPath.indexOf('\n') >= 0) {
throw new RedkaleException("http-context-path(" + contextPath + ") is illegal"); throw new RedkaleException("http-context-path(" + contextPath + ") is illegal");
@@ -287,72 +287,72 @@ public class HttpSimpleRequest extends ClientRequest implements java.io.Serializ
return this; return this;
} }
public HttpSimpleRequest bothConvertType(ConvertType convertType) { public WebRequest bothConvertType(ConvertType convertType) {
this.reqConvertType = convertType; this.reqConvertType = convertType;
this.respConvertType = convertType; this.respConvertType = convertType;
return this; return this;
} }
public HttpSimpleRequest reqConvertType(ConvertType reqConvertType) { public WebRequest reqConvertType(ConvertType reqConvertType) {
this.reqConvertType = reqConvertType; this.reqConvertType = reqConvertType;
return this; return this;
} }
public HttpSimpleRequest respConvertType(ConvertType respConvertType) { public WebRequest respConvertType(ConvertType respConvertType) {
this.respConvertType = respConvertType; this.respConvertType = respConvertType;
return this; return this;
} }
public HttpSimpleRequest remoteAddr(String remoteAddr) { public WebRequest remoteAddr(String remoteAddr) {
this.remoteAddr = remoteAddr; this.remoteAddr = remoteAddr;
return this; return this;
} }
public HttpSimpleRequest locale(String locale) { public WebRequest locale(String locale) {
this.locale = locale; this.locale = locale;
return this; return this;
} }
public HttpSimpleRequest sessionid(String sessionid) { public WebRequest sessionid(String sessionid) {
this.sessionid = sessionid; this.sessionid = sessionid;
return this; return this;
} }
public HttpSimpleRequest contentType(String contentType) { public WebRequest contentType(String contentType) {
this.contentType = contentType; this.contentType = contentType;
return this; return this;
} }
public HttpSimpleRequest currentUserid(Serializable userid) { public WebRequest currentUserid(Serializable userid) {
this.currentUserid = userid; this.currentUserid = userid;
return this; return this;
} }
public HttpSimpleRequest removeHeader(String name) { public WebRequest removeHeader(String name) {
if (this.headers != null) { if (this.headers != null) {
this.headers.remove(name); this.headers.remove(name);
} }
return this; return this;
} }
public HttpSimpleRequest removeParam(String name) { public WebRequest removeParam(String name) {
if (this.params != null) { if (this.params != null) {
this.params.remove(name); this.params.remove(name);
} }
return this; return this;
} }
public HttpSimpleRequest headers(HttpHeaders header) { public WebRequest headers(HttpHeaders header) {
this.headers = header; this.headers = header;
return this; return this;
} }
public HttpSimpleRequest params(HttpParameters params) { public WebRequest params(HttpParameters params) {
this.params = params; this.params = params;
return this; return this;
} }
public HttpSimpleRequest method(String method) { public WebRequest method(String method) {
if (method != null) { if (method != null) {
if (method.indexOf(' ') >= 0 || method.indexOf('\r') >= 0 || method.indexOf('\n') >= 0) { if (method.indexOf(' ') >= 0 || method.indexOf('\r') >= 0 || method.indexOf('\n') >= 0) {
throw new RedkaleException("http-method(" + method + ") is illegal"); throw new RedkaleException("http-method(" + method + ") is illegal");
@@ -362,7 +362,7 @@ public class HttpSimpleRequest extends ClientRequest implements java.io.Serializ
return this; return this;
} }
public HttpSimpleRequest addHeader(String key, String value) { public WebRequest addHeader(String key, String value) {
if (this.headers == null) { if (this.headers == null) {
this.headers = HttpHeaders.create(); this.headers = HttpHeaders.create();
} }
@@ -370,23 +370,23 @@ public class HttpSimpleRequest extends ClientRequest implements java.io.Serializ
return this; 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)); 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)); 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)); 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)); return addHeader(key, String.valueOf(value));
} }
public HttpSimpleRequest setHeader(String key, String value) { public WebRequest setHeader(String key, String value) {
if (this.headers == null) { if (this.headers == null) {
this.headers = HttpHeaders.create(); this.headers = HttpHeaders.create();
} }
@@ -394,23 +394,23 @@ public class HttpSimpleRequest extends ClientRequest implements java.io.Serializ
return this; 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)); 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)); 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)); 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)); return setHeader(key, String.valueOf(value));
} }
public HttpSimpleRequest param(String key, String value) { public WebRequest param(String key, String value) {
if (this.params == null) { if (this.params == null) {
this.params = HttpParameters.create(); this.params = HttpParameters.create();
} }
@@ -418,7 +418,7 @@ public class HttpSimpleRequest extends ClientRequest implements java.io.Serializ
return this; return this;
} }
public HttpSimpleRequest param(String key, TextConvert convert, Object value) { public WebRequest param(String key, TextConvert convert, Object value) {
if (this.params == null) { if (this.params == null) {
this.params = HttpParameters.create(); this.params = HttpParameters.create();
} }
@@ -429,41 +429,41 @@ public class HttpSimpleRequest extends ClientRequest implements java.io.Serializ
return this; return this;
} }
public HttpSimpleRequest param(String key, Object value) { public WebRequest param(String key, Object value) {
return param(key, JsonConvert.root(), value); return param(key, JsonConvert.root(), value);
} }
public HttpSimpleRequest body(byte[] body) { public WebRequest body(byte[] body) {
this.body = body; this.body = body;
return this; return this;
} }
public HttpSimpleRequest clearParams() { public WebRequest clearParams() {
this.params = null; this.params = null;
return this; return this;
} }
public HttpSimpleRequest clearHeaders() { public WebRequest clearHeaders() {
this.headers = null; this.headers = null;
return this; return this;
} }
public HttpSimpleRequest clearRemoteAddr() { public WebRequest clearRemoteAddr() {
this.remoteAddr = null; this.remoteAddr = null;
return this; return this;
} }
public HttpSimpleRequest clearLocale() { public WebRequest clearLocale() {
this.locale = null; this.locale = null;
return this; return this;
} }
public HttpSimpleRequest clearSessionid() { public WebRequest clearSessionid() {
this.sessionid = null; this.sessionid = null;
return this; return this;
} }
public HttpSimpleRequest clearContentType() { public WebRequest clearContentType() {
this.contentType = null; this.contentType = null;
return this; return this;
} }

View File

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

View File

@@ -11,8 +11,8 @@ import org.redkale.boot.Application;
import org.redkale.inject.ResourceFactory; import org.redkale.inject.ResourceFactory;
import org.redkale.net.AsyncIOGroup; import org.redkale.net.AsyncIOGroup;
import org.redkale.net.http.HttpServer; import org.redkale.net.http.HttpServer;
import org.redkale.net.http.HttpSimpleClient; import org.redkale.net.http.WebClient;
import org.redkale.net.http.HttpSimpleRequest; import org.redkale.net.http.WebRequest;
import org.redkale.util.AnyValueWriter; import org.redkale.util.AnyValueWriter;
/** /**
@@ -43,10 +43,10 @@ public class HttpSimpleClientTest {
//Utility.sleep(50000); //Utility.sleep(50000);
final AsyncIOGroup asyncGroup = new AsyncIOGroup(8192, 16); final AsyncIOGroup asyncGroup = new AsyncIOGroup(8192, 16);
asyncGroup.start(); asyncGroup.start();
HttpSimpleClient client = HttpSimpleClient.create(asyncGroup); WebClient client = WebClient.create(asyncGroup);
InetSocketAddress addr = new InetSocketAddress("127.0.0.1", port); 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.getAsync("http://127.0.0.1:" + port + req.getPath() + "?id=100").join());
System.out.println(client.sendAsync(addr, req).join()); System.out.println(client.sendAsync(addr, req).join());
} }
@@ -55,7 +55,7 @@ public class HttpSimpleClientTest {
final CountDownLatch cdl = new CountDownLatch(count); final CountDownLatch cdl = new CountDownLatch(count);
for (int i = 100; i < 100 + count; i++) { for (int i = 100; i < 100 + count; i++) {
final int index = 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) -> { client.getAsync("http://127.0.0.1:" + port + req.getPath() + "?id=" + index).whenComplete((v, t) -> {
cdl.countDown(); cdl.countDown();
Assertions.assertEquals("ok-" + index, new String((byte[]) v.getResult())); Assertions.assertEquals("ok-" + index, new String((byte[]) v.getResult()));
@@ -68,7 +68,7 @@ public class HttpSimpleClientTest {
final CountDownLatch cdl = new CountDownLatch(count); final CountDownLatch cdl = new CountDownLatch(count);
for (int i = 100; i < 100 + count; i++) { for (int i = 100; i < 100 + count; i++) {
final int index = 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) -> { client.sendAsync(addr, req).whenComplete((v, t) -> {
cdl.countDown(); cdl.countDown();
System.out.println("输出: " + new String((byte[]) v.getResult())); 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 java.lang.reflect.Field;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test; 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.client.ClientRequest;
import org.redkale.net.http.HttpSimpleRequest; import org.redkale.net.http.WebRequest;
/** /**
* *
@@ -28,10 +28,10 @@ public class RequestCoderTest {
@Test @Test
public void run1() throws Exception { public void run1() throws Exception {
HttpSimpleRequest req1 = HttpSimpleRequest.createPostPath("/aaa"); WebRequest req1 = WebRequest.createPostPath("/aaa");
System.out.println("simpleRequest1: " + req1); System.out.println("simpleRequest1: " + req1);
byte[] bytes = HttpSimpleRequestCoder.getInstance().encode(req1); byte[] bytes = WebRequestCoder.getInstance().encode(req1);
HttpSimpleRequest req2 = HttpSimpleRequestCoder.getInstance().decode(bytes); WebRequest req2 = WebRequestCoder.getInstance().decode(bytes);
Field timeFiedl = ClientRequest.class.getDeclaredField("createTime"); Field timeFiedl = ClientRequest.class.getDeclaredField("createTime");
timeFiedl.setAccessible(true); timeFiedl.setAccessible(true);
timeFiedl.set(req2, req1.getCreateTime()); timeFiedl.set(req2, req1.getCreateTime());
@@ -41,12 +41,12 @@ public class RequestCoderTest {
@Test @Test
public void run2() throws Exception { public void run2() throws Exception {
HttpSimpleRequest req1 = HttpSimpleRequest.createPostPath("/aaa"); WebRequest req1 = WebRequest.createPostPath("/aaa");
req1.addHeader("X-aaa", "aaa"); req1.addHeader("X-aaa", "aaa");
req1.param("bean", "{}"); req1.param("bean", "{}");
System.out.println("simpleRequest1: " + req1); System.out.println("simpleRequest1: " + req1);
byte[] bytes = HttpSimpleRequestCoder.getInstance().encode(req1); byte[] bytes = WebRequestCoder.getInstance().encode(req1);
HttpSimpleRequest req2 = HttpSimpleRequestCoder.getInstance().decode(bytes); WebRequest req2 = WebRequestCoder.getInstance().decode(bytes);
Field timeFiedl = ClientRequest.class.getDeclaredField("createTime"); Field timeFiedl = ClientRequest.class.getDeclaredField("createTime");
timeFiedl.setAccessible(true); timeFiedl.setAccessible(true);
timeFiedl.set(req2, req1.getCreateTime()); timeFiedl.set(req2, req1.getCreateTime());
@@ -56,14 +56,14 @@ public class RequestCoderTest {
@Test @Test
public void run3() throws Exception { public void run3() throws Exception {
HttpSimpleRequest req1 = HttpSimpleRequest.createPostPath("/aaa"); WebRequest req1 = WebRequest.createPostPath("/aaa");
req1.addHeader("X-aaa", "aaa"); req1.addHeader("X-aaa", "aaa");
req1.addHeader("X-bbb", "bbb1"); req1.addHeader("X-bbb", "bbb1");
req1.addHeader("X-bbb", "bbb2"); req1.addHeader("X-bbb", "bbb2");
req1.param("bean", "{}"); req1.param("bean", "{}");
System.out.println("simpleRequest1: " + req1); System.out.println("simpleRequest1: " + req1);
byte[] bytes = HttpSimpleRequestCoder.getInstance().encode(req1); byte[] bytes = WebRequestCoder.getInstance().encode(req1);
HttpSimpleRequest req2 = HttpSimpleRequestCoder.getInstance().decode(bytes); WebRequest req2 = WebRequestCoder.getInstance().decode(bytes);
Field timeFiedl = ClientRequest.class.getDeclaredField("createTime"); Field timeFiedl = ClientRequest.class.getDeclaredField("createTime");
timeFiedl.setAccessible(true); timeFiedl.setAccessible(true);
timeFiedl.set(req2, req1.getCreateTime()); timeFiedl.set(req2, req1.getCreateTime());