使用HttpAsyncClient在java中启动并忘记
我正在尝试在我的应用程序中使用HTTPAsyncCLient进行fire and forget 我遵循这里给出的示例: 我的代码如下所示:使用HttpAsyncClient在java中启动并忘记,java,http,apache-httpclient-4.x,Java,Http,Apache Httpclient 4.x,我正在尝试在我的应用程序中使用HTTPAsyncCLient进行fire and forget 我遵循这里给出的示例: 我的代码如下所示: CloseableHttpAsyncClient httpclient = HttpAsyncClients.createDefault(); httpclient.start(); HttpGet request = new HttpGet(url); Future
CloseableHttpAsyncClient httpclient = HttpAsyncClients.createDefault();
httpclient.start();
HttpGet request = new HttpGet(url);
Future<HttpResponse> future = httpclient.execute(request, null);
/*try {
HttpResponse resp = future.get();
StringBuilder sb = new StringBuilder();
BufferedReader reader = new BufferedReader(new InputStreamReader(resp.getEntity().getContent()));
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line);
}
String fr = sb.toString();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}*/
httpclient.close();
CloseableHttpAsyncClient httpclient=HttpAsyncClients.createDefault();
httpclient.start();
HttpGet请求=新的HttpGet(url);
Future=httpclient.execute(请求,null);
/*试一试{
HttpResponse resp=future.get();
StringBuilder sb=新的StringBuilder();
BufferedReader=new BufferedReader(new InputStreamReader(resp.getEntity().getContent());
字符串行=null;
而((line=reader.readLine())!=null){
某人附加(行);
}
字符串fr=sb.toString();
}捕捉(中断异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(执行例外){
//TODO自动生成的捕捉块
e、 printStackTrace();
}*/
httpclient.close();
如果我取消注释被评论的部分,一切都正常。
但我想做的是一个火和忘记的请求。因此,当我注释掉上面的部分时,不会发出HTTP请求。
知道我做错了什么吗?对于fire and forget请求,我应该怎么做?在请求完成之前,您的httpclient实例无法关闭 虽然我不确定,但我建议
// ONCE
CloseableHttpAsyncClient httpclient = HttpAsyncClients.createDefault();
httpclient.start();
// for every fire and forget request
HttpGet request = new HttpGet(url);
httpclient.execute(request, null);`
在请求之间保持客户机的活动状态,因此不要调用close(而是重用实例)因为您不会强制将来处于已注释掉的状态,所以很可能在发送请求之前执行httpclient.close(),更不用说完成请求了。你试过在近距离突破吗?如果被困在这个断点中,你能观察到请求吗?你是对的。如果我在httpclient.close()上中断,则会在服务器上接收请求。所以我理解这个问题。我们如何让它启动并忘记呢?如果不调用
close()
,我就无法重新启动我的tomcat。有什么地方可以调用它吗?