Java-AsyncHttpClient-中止正在进行的异步调用

Java-AsyncHttpClient-中止正在进行的异步调用,java,multithreading,asynchttpclient,Java,Multithreading,Asynchttpclient,我正在使用HttpAsyncClient以获取一些URL。在某些情况下,比方说当我收到状态HTTP-304,我想放弃正在进行的呼叫。我不想等待身体,我不想把机器资源花在它上面。有没有办法取消这个?显然,像futuresponse.cancel(true)或futuresponse.finalize()这样的事情不起作用 Future<Response> futureResponse = httpClient.prepareGet("some-url").addHeader("some

我正在使用
HttpAsyncClient
获取一些URL。在某些情况下,比方说当我收到状态
HTTP-304
,我想放弃正在进行的呼叫。我不想等待身体,我不想把机器资源花在它上面。有没有办法取消这个?显然,像
futuresponse.cancel(true)
futuresponse.finalize()
这样的事情不起作用

Future<Response> futureResponse = httpClient.prepareGet("some-url").addHeader("some", "header").execute(new AsyncCompletionHandler<Response>() {
    @Override
    public State onStatusReceived(HttpResponseStatus status) throws Exception {
        logger.info("status {}", status);
        // CONDITIONAL FINISH THIS CALL
        return super.onStatusReceived(status);
    }

    @Override
    public Response onCompleted(Response response) throws Exception {
        logger.info("its ok");
        return response;
    }

    @Override
    public void onThrowable(Throwable t) {
        logger.error(t);
    }
});
Future-futuresponse=httpClient.prepareGet(“一些url”).addHeader(“一些”,“头”).execute(新的AsyncCompletionHandler()){
@凌驾
公共状态onStatusReceived(HttpResponseStatus状态)引发异常{
logger.info(“状态{}”,状态);
//完成这个电话
返回super.onStatusReceived(状态);
}
@凌驾
公共响应onCompleted(响应响应)引发异常{
logger.info(“正常”);
返回响应;
}
@凌驾
可滚动的公共空间(可丢弃的t){
误差(t);
}
});
来自:

您可以返回ABORT以关闭连接

    @Override
    public State onStatusReceived(HttpResponseStatus responseStatus) throws Exception {
        Integer status = responseStatus.getStatusCode();
        if (304 == status) {  // CONDITIONAL FINISH THIS CALL
            return State.ABORT;
        } else {
            doSomething()
            return ...
        }           
    }