RestTemplate的基本使用


getForObject  和 getForEntity  的區別

getForObject函數實際上是對getForEntity函數的進一步封裝,如果你只關注返回的消息體的內容,對其他信息都不關注,此時可以使用getForObject。

ResponseEntity<T>是Spring對HTTP請求響應的封裝,包括了幾個重要的元素,如響應碼、contentType、contentLength、響應消息體等。如果需要提取其中的部分屬性的話直接從ResponseEntity中調用相應的方法即可。(具體方法見下圖)

 

 

 

注意:使用restTemplate發送請求的時候,url地址的開頭必須是http:// .......    一定不能是 https:// ...........       

 

1、RestTemplate發送get請求攜帶HttpHeaders信息、參數

1 HttpHeaders httpHeaders= new HttpHeaders(); 2 httpHeaders.add("Host", "XXXX.XXXX.XXXX.XX"); 3 //這里如果需要傳遞參數的話,將參數封裝在map集合中,寫到下面式子中null的位置處 4 HttpEntity<String> requestEntity = new HttpEntity<>(null, headers);//這里將頭信息封裝進HttpEntity中,發送請求時用exchange代替getForObject()方法 5 ResponseEntity<String> resEntity = restTemplate.exchange(url.toString(), HttpMethod.GET, requestEntity, String.class);

 

2、RestTemplate發送get請求攜帶參數(直接將具體的參數傳遞過去)

  方法一:(當String類型的url地址中有參數的位置,可以理解為占位符)

  

1 RestTemplate restTemplate = new RestTemplate(); 2 ResponseEntity<String> res = restTemplate.getForEntity("http://localhost:8080/user/{id}", String.class, "1");

 

  方法二:(將參數封裝到map集合中傳遞)

Map<String, Object> map = new HashMap<String, Object>(); map.put("id", 11); ResponseEntity<String> res = restTemplate.getForEntity( "http://localhost::8080/user/{id}", String.class, map); String body = res.getBody();//返回的ResponseEntity中包含了頭信息,body信息,狀態碼等信息。

 

3、RestTemplate發送get請求---不攜帶任何參數

1 RestTemplate restTemplate = new RestTemplate(); 2 ResponseEntity<String> res = restTemplate.getForEntity("http://localhost:8080/user/{id}", String.class);

 

 

4、RestTemplate發送Post請求----沒有參數,沒有HttpHeaders信息

  • 方法的第一參數表示要調用的服務的地址
  • 方法的第二個參數表示上傳的參數
  • 方法的第三個參數表示返回的消息體的數據類型
@RequestMapping("/book3") public Book book3() { Book book = new Book(); book.setName("紅樓夢"); ResponseEntity<Book> responseEntity = restTemplate.postForEntity("http://HELLO-SERVICE/getbook2", book, Book.class); return responseEntity.getBody(); }

 

5、如果你只關注,返回的消息體,可以直接使用postForObject。用法和getForEntity一致。

6、使用RestTemplate發送Post請求----攜帶HttpHeaders信息,攜帶參數。

HttpHeaders httpHeaders= new HttpHeaders();
httpHeaders.add("Host", "XXXX.XXXX.XXXX.XX");
Map param = new HashMap();
param.put("username","lisi");
HttpEntity<HashMap> requestEntity = new HttpEntity<HashMap>(map, httpHeaders);
String result
= restTemplate.postForObject(url, requestEntity, String.class);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM