WebRequest
This commit is contained in:
@@ -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 {
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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();
|
||||||
@@ -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);
|
||||||
|
|||||||
@@ -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());
|
||||||
// }
|
// }
|
||||||
//
|
//
|
||||||
@@ -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;
|
||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -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;
|
||||||
}
|
}
|
||||||
@@ -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;
|
||||||
|
|
||||||
@@ -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()));
|
||||||
|
|||||||
@@ -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());
|
||||||
|
|||||||
Reference in New Issue
Block a user