java rest httpclient_java http请求建议使用webClient,少用RestTemplate,不用HttpClient
簡介:
webClient:是Spring-webFlux包下的,非阻塞響應,最低java8支持函數式編程,性能好
RestTemplate:是Spring-webmvc包下的,滿足RestFul原則,代碼簡單,默認依賴jdk的HTTP連接工具。
HttpClient:是apache httpClient包下的,代碼復雜,需要資源回收。
一、webClient get代碼如下:(非常簡單)
//create()創建一個WebClient的實例
//get()等選擇調用方式為get
//uri()指定需要請求的路徑
//retrieve()用來發起請求并獲得響應
//bodyToMono(String.class)用來指定請求結果需要處理為String,并包裝為Reactor的Mono對象。
Monoresponse = WebClient.create().get().uri("http:localhost:8080/rest/testGetHeader").retrieve().bodyToMono(String.class);
return response.block();
二、RestTemplate get代碼如下:(簡單)
1、先在啟動類注冊:
@Bean
public RestTemplate restTemplate(){
return new RestTemplate();
}
2、注入?RestTemplate 對象后使用getForObject即可(簡單get請求),還有postForObject(),put(),delete()等方法。
restTemplate.getForObject(uri, Object.class);
三、HttpClient get代碼如下:(復雜,不推薦使用)
try{
CloseableHttpClient client = HttpClients.createDefault();
HttpGet httpGet = new HttpGet(url);
//設置頭信息
httpGet.setHeader(*, *);
HttpResponseresponse response = client.execute(httpGet);
if(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK){
return (String)new ObjectMapper().readValue(response.getEntity().getContent(), String.class);
}else{
throw new Exception("請求失敗,返回狀態:"+response.getStatusLine().getStatusCode());
}
}catch(Exception e){
log.error("發送http錯誤 " + e);
throw e;
}finally{
try {
client.close();
} catch (IOException e) {
log.error("發送http錯誤 " + e);
throw e;
}
}
總結
以上是生活随笔為你收集整理的java rest httpclient_java http请求建议使用webClient,少用RestTemplate,不用HttpClient的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java.io.file jar_IDE
- 下一篇: 我想你是爱我的是哪首歌啊?