Java Low Level REST Client 官网说明-响应处理

响应结果,无论是被同步请求返回的结果还是作为一个ResponseListener#onSuccess(Response)获取的结果,包装被http client返回的这个响应对象并且暴露额外的信息。

Response response = restClient.performRequest(new Request("GET", "/"));

RequestLine requestLine = response.getRequestLine(); //信息关于执行的请求

HttpHost host = response.getHost(); //返回响应的host

int statusCode = response.getStatusLine().getStatusCode(); //响应状态

Header[] headers = response.getHeaders(); //响应头信息

String responseBody = EntityUtils.toString(response.getEntity()); //响应内容

当执行一个请求一个异常被抛出(或者ResponseListener#onFailure(Exception)接收的参数)在下面的设想:

1、IOException

2、交互问题 比如SocketTimeoutException

3、ResponseException :一个记过被返回但是他的状态code表示为一个error(不是2XX) 一个ResponseException来源于一个有效的http请求,因此它暴露他的响应返回对象它给了访问结果的路径

一个ResponseException 不会被排除 对于返回404的head请求,因为他是一个被希望的head请求响应,简单标注资源没有被找到。

所有其他http method 抛出一个为404的响应异常 除非ignore参数包含404,ignore是一个特定的客户端参数 它不会发送到Elasticsearch并且包含一个逗号分割的错误状态列表,他允许控制是否一些错误code是否应该被作为一个希望的响应而不是一个异常去对待。

这是有用的对于当document丢失时候获取api能返回404的实例,在这种情况下 返回体将不会报错一个error而是经常使用api的响应结果,仅仅是没有document 因为它已经丢失

请注意low-level client 不能暴露任何帮助对于json的控制或者不控制,用户自由的使用他们想用的library去组织结果

背后的Apache Async Http Client有不同的org.apache.http.HttpEntity 实现,他们去允许提供不通format的请求体(stream, byte array, string etc.)

对于读取响应体 the HttpEntity#getContent 方法是很方便的 它返回一个输入流从前面的缓存的响应体中读取,作为一个便利的功能,这是可能的去提供一个自定义的HttpAsyncResponseConsumer 它多少字节被读取或者缓存

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值