资讯专栏INFORMATION COLUMN

Elasticsearch Java Low Level REST Client(读取响应)

wangxinarhat / 2278人阅读

摘要:读取响应对象由同步方法返回或作为中的参数接收,它包装客户端返回的响应对象并公开一些其他信息。有关执行的请求的信息。返回响应的主机。响应体包含在对象中。对于返回状态码的请求,不会抛出,因为它是一个预期的响应,仅表示找不到该资源。

读取响应

Response对象由同步performRequest方法返回或作为ResponseListener#onSuccess(Response)中的参数接收,它包装http客户端返回的响应对象并公开一些其他信息。

Response response = restClient.performRequest(new Request("GET", "/"));
RequestLine requestLine = response.getRequestLine(); 
HttpHost host = response.getHost(); 
int statusCode = response.getStatusLine().getStatusCode(); 
Header[] headers = response.getHeaders(); 
String responseBody = EntityUtils.toString(response.getEntity());

response.getRequestLine() — 有关执行的请求的信息。

response.getHost() — 返回响应的主机。

response.getStatusLine() — 响应状态行,你可以从中检索状态代码。

response.getHeaders() — 响应头,也可以通过getHeader(String)按名称检索。

response.getEntity() — 响应体包含在org.apache.http.HttpEntity对象中。

执行请求时,会抛出异常(或在以下方案中作为ResponseListener#onFailure(Exception)中的参数接收:

IOException

通信问题(例如SocketTimeoutException

ResponseException

返回了一个响应,但其状态代码表示错误(不是2xx),ResponseException源自有效的http响应,因此它公开其相应的Response对象,该对象提供对返回的响应的访问。

对于返回404状态码的HEAD请求,不会抛出ResponseException,因为它是一个预期的HEAD响应,仅表示找不到该资源。除非ignore参数包含404,否则所有其他HTTP方法(例如,GET)都会为404响应抛出ResponseExceptionignore是一个特殊的客户端参数,不会发送到Elasticsearch并包含逗号分隔的错误状态代码列表,它允许控制是否应将某些错误状态码视为预期响应而不是异常。这对于例如getapi很有用,因为它可以在文档丢失时返回404,在这种情况下,响应正文将不包含错误,而是通常的getapi响应,只是没有找到未找到的文档。

请注意,低级别客户端不会公开任何json编组和反编组的辅助程序,用户可以自由地使用他们喜欢的库。

底层的Apache Async Http Client附带了不同的org.apache.http.HttpEntity实现,允许以不同的格式提供请求体(流、字节数组、字符串等),至于读取响应体,HttpEntity#getContent方法很方便,它返回从先前缓冲的响应体读取的InputStream,作为替代方案,可以提供自定义org.apache.http.nio.protocol.HttpAsyncResponseConsumer来控制字节的读取和缓冲方式。

日志记录

Java REST客户端使用Apache Async Http Client使用的相同日志库:Apache Commons Logging,它支持许多流行的日志记录实现,启用日志记录的java包是客户端本身的org.elasticsearch.client和嗅探器的org.elasticsearch.client.sniffer

还可以启用请求跟踪器日志记录,以便以curl格式记录每个请求和相应的响应,这在调试时很方便,例如,如果需要手动执行请求以检查它是否仍然产生与它相同的响应,为tracer包启用跟踪日志记录以打印出此类日志行,请注意,此类日志记录开销很大,不应在生产环境中始终启用,而是仅在需要时暂时使用。

上一篇:执行请求 下一篇:通用配置

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/72352.html

相关文章

  • Elasticsearch Java REST Client(目录)

    摘要:用于的官方高级别客户端,基于低级别客户端,它公开特定的方法,并负责请求编组和响应反编组。入门初始化执行请求读取响应日志记录通用配置嗅探器在中被添加。依赖于核心项目,它接受与相同的请求参数,并返回相同的响应对象。 Elasticsearch Java REST Client Java REST Client有两种类型: Java Low Level REST Client:用于Elast...

    roland_reed 评论0 收藏0
  • Elasticsearch Java Low Level REST Client(执行请求)

    摘要:执行请求一旦创建了,就可以通过调用或来发送请求,是同步的,将阻塞调用线程并在请求成功时返回,如果失败则抛出异常。自定义响应消费者。处理返回的响应。由于通信错误或带有指示错误的状态码的响应,处理返回的异常。 执行请求 一旦创建了RestClient,就可以通过调用performRequest或performRequestAsync来发送请求,performRequest是同步的,将阻塞调...

    Code4App 评论0 收藏0

发表评论

0条评论

wangxinarhat

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<