diff --git a/src/main/java/org/redkale/cluster/HttpRpcClient.java b/src/main/java/org/redkale/cluster/HttpRpcClient.java index 9c4914037..017ce7038 100644 --- a/src/main/java/org/redkale/cluster/HttpRpcClient.java +++ b/src/main/java/org/redkale/cluster/HttpRpcClient.java @@ -11,6 +11,7 @@ import java.util.Map; import java.util.concurrent.CompletableFuture; import org.redkale.convert.json.JsonConvert; import org.redkale.net.http.*; +import org.redkale.util.RedkaleException; /** * 不依赖MessageRecord则可兼容RPC方式 @@ -60,7 +61,10 @@ public abstract class HttpRpcClient implements ClusterRpcClient CompletableFuture sendMessage(HttpSimpleRequest request, Type type) { return sendMessage(generateHttpReqTopic(request, null), 0, null, request).thenApply((HttpResult httbs) -> { - if (httbs == null || httbs.getResult() == null) { + if (!httbs.isSuccess()) { + throw new RedkaleException(httbs.getHeader("retinfo", "Internal Server Error")); + } + if (httbs.getResult() == null) { return null; } return JsonConvert.root().convertFrom(type, httbs.getResult()); @@ -69,7 +73,10 @@ public abstract class HttpRpcClient implements ClusterRpcClient CompletableFuture sendMessage(Serializable userid, HttpSimpleRequest request, Type type) { return sendMessage(generateHttpReqTopic(request, null), userid, null, request).thenApply((HttpResult httbs) -> { - if (httbs == null || httbs.getResult() == null) { + if (!httbs.isSuccess()) { + throw new RedkaleException(httbs.getHeader("retinfo", "Internal Server Error")); + } + if (httbs.getResult() == null) { return null; } return JsonConvert.root().convertFrom(type, httbs.getResult()); @@ -78,7 +85,10 @@ public abstract class HttpRpcClient implements ClusterRpcClient CompletableFuture sendMessage(Serializable userid, String groupid, HttpSimpleRequest request, Type type) { return sendMessage(generateHttpReqTopic(request, null), userid, groupid, request).thenApply((HttpResult httbs) -> { - if (httbs == null || httbs.getResult() == null) { + if (!httbs.isSuccess()) { + throw new RedkaleException(httbs.getHeader("retinfo", "Internal Server Error")); + } + if (httbs.getResult() == null) { return null; } return JsonConvert.root().convertFrom(type, httbs.getResult()); diff --git a/src/main/java/org/redkale/net/http/HttpResult.java b/src/main/java/org/redkale/net/http/HttpResult.java index f2032b1f9..7808af06e 100644 --- a/src/main/java/org/redkale/net/http/HttpResult.java +++ b/src/main/java/org/redkale/net/http/HttpResult.java @@ -168,6 +168,10 @@ public class HttpResult { this.status = status; } + public boolean isSuccess() { + return status == 0 || status == 200; + } + @Override public String toString() { return JsonConvert.root().convertTo(this);