以下是我从Elasticsearch官方网站上复制的内容
" Response对象,由同步performRequest方法返回或作为ResponseListener#onSuccess(Response)中的参数接收,包装http客户端返回的响应对象"
https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/_reading_responses.html
以下是ElasticSearchService类中的异步函数 public void getAsyncRequest(String endpoint,Map params,HttpEntity entity){
restClient.performRequestAsync("GET", endpoint, params, entity, new ResponseListener() {
@Override
public void onSuccess(Response response) {
try {
LOGGER.info(EntityUtils.toString(response.getEntity()));
} catch (IOException e) {
LOGGER.error(e.getMessage());
}
}
@Override
public void onFailure(Exception e) {
LOGGER.error(e.getMessage());
}
});
}
以下是另一个班级。
public static void main(String[] args) {
ElasticSearchService.getAsyncRequest(endpoint, params, entity);
}
所以我的问题是,当调用getAsyncRequestWithBody时,当它是onSuccess时,它将获得响应对象,但是如何将它返回给静态的调用者" main"功能
我没有弄清楚它是什么意思"包装http客户端返回的响应对象"
谢谢你的帮助。 leochung
答案 0 :(得分:0)
在处理响应之前,您的Java代码很可能会退出。您可以使用RestClient.SyncResponseListener
等待响应返回。
但是在这个例子中,你基本上没有从异步调用中获得任何东西。如果您的底层代码不支持它,您可以继续使用同步代码。