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?!!
}
});
}