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 ...
}
}