Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java vertx失败,但被视为成功()_Java_Vert.x - Fatal编程技术网

Java vertx失败,但被视为成功()

Java vertx失败,但被视为成功(),java,vert.x,Java,Vert.x,我有一个方法: public void getVmsAdminToken(HttpClient httpClient, handler<AsyncResult<String>> handler) { httpClient.postAbs(url, h -> h.bodyHandler(bh -> { try { switch (h.statusCode())

我有一个方法:

    public void getVmsAdminToken(HttpClient httpClient, handler<AsyncResult<String>> handler) {
           httpClient.postAbs(url, h -> h.bodyHandler(bh -> {
                try {
                    switch (h.statusCode()) {
                        case 200:
                            JsonObject vmsResponse = bh.toJsonObject();                       
                            handler.handle(Future.succeededFuture(Json.encode(vmsResponse)));
                            break;
                        default:
                            LOG.error("VMS call failed {}", h.statusCode());
                            handler.handle(Future.failedFuture(500 + ""));
                            break;
                    }
                } catch (Throwable t) {
                    LOG.error("Exception in getVmsAdminToken", t);
                    handler.handle(Future.failedFuture(500 + ""));
                }
            }))
                    .setTimeout(timeOutMs)
                    .putHeader("content-type", "application/json")
                    .putHeader("stub", apiKey)
                    .end(vehicleReqBody.encode());
    }
即使getVmsToken失败,执行也会落入
if(reply.succeed())


为什么会这样?

您应该检查作为HTTP调用结果的相同
AsyncResult
对象:

private void getAdminToken(路由上下文ctx、RedisFleetStorage存储、HttpClient HttpClient){
getVmsAdminToken(fleetId、用户、车辆、httpClient、replyVms->{
如果(replyVms.successed()){
//你知道吗
}
});
}

h.statusCode()对于failure caseVMS调用failed 417@psaraJ12的值是多少如此愚蠢。。问题是我在检查别的答复。。“replyVms”而不是“reply”
private void getAdminToken(RoutingContext ctx, RedisFleetStorage storage, HttpClient httpClient) {

    getVmsAdminToken(fleetId, user, vehicle, httpClient, replyVms -> {
                                            if (reply.succeeded()) {
                                               // why succeeded?!!
                                            }
                                        });
}