我正在运行以下代码:
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet("http://10.0.0.22:8086/db/cadvisorDB/series?u=root&p=root&q=select%20max(memory_usage)%20from%20stats%20where%20container_name%20%3D%27execution_container_"+bench_list+"_"+i+"%27%20and%20memory_usage%20%3C%3E%200%20group%20by%20container_name");
//Thread.sleep(10000);
CloseableHttpResponse requestResponse = httpclient.execute(httpGet);
String response=EntityUtils.toString(requestResponse.getEntity());
System.out.println(response);
输出控制台:
[]
当我等待 HttpResponse 30 秒时,它起作用了。我得到了完整的响应(带有数据点的 JSON):
Thread.sleep(30000);
是否可以使用 Apache Java 客户端告诉客户端等待,直到获得不同于“[]”的值。我的意思是一个非空的 Json。
使用超时并不能解决问题。
提前谢谢你
最佳答案
然后设置超时就可以了。
HttpGet request = new HttpGet(url);
// set timeouts as you like
RequestConfig config = RequestConfig.custom()
.setSocketTimeout(60 * 1000).setConnectTimeout(20 * 1000)
.setConnectionRequestTimeout(20 * 1000).build();
request.setConfig(config);
关于Java HTTP 客户端输出空 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34317845/