摘要:讀取響應(yīng)對(duì)象由同步方法返回或作為中的參數(shù)接收,它包裝客戶端返回的響應(yīng)對(duì)象并公開一些其他信息。有關(guān)執(zhí)行的請(qǐng)求的信息。返回響應(yīng)的主機(jī)。響應(yīng)體包含在對(duì)象中。對(duì)于返回狀態(tài)碼的請(qǐng)求,不會(huì)拋出,因?yàn)樗且粋€(gè)預(yù)期的響應(yīng),僅表示找不到該資源。
讀取響應(yīng)
Response對(duì)象由同步performRequest方法返回或作為ResponseListener#onSuccess(Response)中的參數(shù)接收,它包裝http客戶端返回的響應(yīng)對(duì)象并公開一些其他信息。
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() — 有關(guān)執(zhí)行的請(qǐng)求的信息。
response.getHost() — 返回響應(yīng)的主機(jī)。
response.getStatusLine() — 響應(yīng)狀態(tài)行,你可以從中檢索狀態(tài)代碼。
response.getHeaders() — 響應(yīng)頭,也可以通過getHeader(String)按名稱檢索。
response.getEntity() — 響應(yīng)體包含在org.apache.http.HttpEntity對(duì)象中。
執(zhí)行請(qǐng)求時(shí),會(huì)拋出異常(或在以下方案中作為ResponseListener#onFailure(Exception)中的參數(shù)接收:
IOException
通信問題(例如SocketTimeoutException)
ResponseException
返回了一個(gè)響應(yīng),但其狀態(tài)代碼表示錯(cuò)誤(不是2xx),ResponseException源自有效的http響應(yīng),因此它公開其相應(yīng)的Response對(duì)象,該對(duì)象提供對(duì)返回的響應(yīng)的訪問。
對(duì)于返回404狀態(tài)碼的HEAD請(qǐng)求,不會(huì)拋出ResponseException,因?yàn)樗且粋€(gè)預(yù)期的HEAD響應(yīng),僅表示找不到該資源。除非ignore參數(shù)包含404,否則所有其他HTTP方法(例如,GET)都會(huì)為404響應(yīng)拋出ResponseException。ignore是一個(gè)特殊的客戶端參數(shù),不會(huì)發(fā)送到Elasticsearch并包含逗號(hào)分隔的錯(cuò)誤狀態(tài)代碼列表,它允許控制是否應(yīng)將某些錯(cuò)誤狀態(tài)碼視為預(yù)期響應(yīng)而不是異常。這對(duì)于例如getapi很有用,因?yàn)樗梢栽谖臋n丟失時(shí)返回404,在這種情況下,響應(yīng)正文將不包含錯(cuò)誤,而是通常的getapi響應(yīng),只是沒有找到未找到的文檔。
請(qǐng)注意,低級(jí)別客戶端不會(huì)公開任何json編組和反編組的輔助程序,用戶可以自由地使用他們喜歡的庫(kù)。
底層的Apache Async Http Client附帶了不同的org.apache.http.HttpEntity實(shí)現(xiàn),允許以不同的格式提供請(qǐng)求體(流、字節(jié)數(shù)組、字符串等),至于讀取響應(yīng)體,HttpEntity#getContent方法很方便,它返回從先前緩沖的響應(yīng)體讀取的InputStream,作為替代方案,可以提供自定義org.apache.http.nio.protocol.HttpAsyncResponseConsumer來控制字節(jié)的讀取和緩沖方式。
日志記錄Java REST客戶端使用Apache Async Http Client使用的相同日志庫(kù):Apache Commons Logging,它支持許多流行的日志記錄實(shí)現(xiàn),啟用日志記錄的java包是客戶端本身的org.elasticsearch.client和嗅探器的org.elasticsearch.client.sniffer。
還可以啟用請(qǐng)求跟蹤器日志記錄,以便以curl格式記錄每個(gè)請(qǐng)求和相應(yīng)的響應(yīng),這在調(diào)試時(shí)很方便,例如,如果需要手動(dòng)執(zhí)行請(qǐng)求以檢查它是否仍然產(chǎn)生與它相同的響應(yīng),為tracer包啟用跟蹤日志記錄以打印出此類日志行,請(qǐng)注意,此類日志記錄開銷很大,不應(yīng)在生產(chǎn)環(huán)境中始終啟用,而是僅在需要時(shí)暫時(shí)使用。
上一篇:執(zhí)行請(qǐng)求 下一篇:通用配置文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/72352.html
摘要:用于的官方高級(jí)別客戶端,基于低級(jí)別客戶端,它公開特定的方法,并負(fù)責(zé)請(qǐng)求編組和響應(yīng)反編組。入門初始化執(zhí)行請(qǐng)求讀取響應(yīng)日志記錄通用配置嗅探器在中被添加。依賴于核心項(xiàng)目,它接受與相同的請(qǐng)求參數(shù),并返回相同的響應(yīng)對(duì)象。 Elasticsearch Java REST Client Java REST Client有兩種類型: Java Low Level REST Client:用于Elast...
摘要:執(zhí)行請(qǐng)求一旦創(chuàng)建了,就可以通過調(diào)用或來發(fā)送請(qǐng)求,是同步的,將阻塞調(diào)用線程并在請(qǐng)求成功時(shí)返回,如果失敗則拋出異常。自定義響應(yīng)消費(fèi)者。處理返回的響應(yīng)。由于通信錯(cuò)誤或帶有指示錯(cuò)誤的狀態(tài)碼的響應(yīng),處理返回的異常。 執(zhí)行請(qǐng)求 一旦創(chuàng)建了RestClient,就可以通過調(diào)用performRequest或performRequestAsync來發(fā)送請(qǐng)求,performRequest是同步的,將阻塞調(diào)...
閱讀 1405·2023-04-26 03:04
閱讀 2351·2019-08-30 15:44
閱讀 3731·2019-08-30 14:15
閱讀 3529·2019-08-27 10:56
閱讀 2738·2019-08-26 13:53
閱讀 2619·2019-08-26 13:26
閱讀 3081·2019-08-26 12:11
閱讀 3613·2019-08-23 18:21