欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

RestTemplate發(fā)送HTTP?GET請求使用方法詳解

 更新時間:2022年03月17日 09:25:31   作者:字母哥哥  
這篇文章主要為大家介紹了關于RestTemplate發(fā)送HTTP?GET請求的使用方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家<BR>33+多多進步

前言

本文是精講RestTemplate第3篇,前篇的blog訪問地址如下:

RestTemplate在Spring或非Spring環(huán)境下使用精講

RestTemplate實現(xiàn)多種底層HTTP客戶端類庫的切換用法

RestTemplate可以發(fā)送HTTP GET請求,經常使用到的方法有兩個:

getForObject()

getForEntity()

二者的主要區(qū)別在于,getForObject()返回值是HTTP協(xié)議的響應體。getForEntity()返回的是ResponseEntity,ResponseEntity是對HTTP響應的封裝,除了包含響應體,還包含HTTP狀態(tài)碼、contentType、contentLength、Header等信息。

為了方便后續(xù)開發(fā)測試,首先介紹一個網站給大家。JSONPlaceholder是一個提供免費的在線REST API的網站,我們在開發(fā)時可以使用它提供的url地址測試下網絡請求以及請求參數(shù)。或者當我們程序需要獲取一些模擬數(shù)據(jù)、模擬圖片時也可以使用它。

一、 getForObject() 方法

1.1.以String的方式接受請求結果數(shù)據(jù)

在Spring Boot環(huán)境下寫一個單元測試用例,以String類型接收響應結果信息

@SpringBootTest
class ResttemplateWithSpringApplicationTests {
   @Resource
   private RestTemplate restTemplate;
   @Test
   void testSimple()  {
      String url = "http://jsonplaceholder.typicode.com/posts/1";
      String str = restTemplate.getForObject(url, String.class);
      System.out.println(str);
   }
}

getForObject第二個參數(shù)為返回值的類型,String.class以字符串的形式接受getForObject響應結果,

1.2.以POJO對象的方式接受結果數(shù)據(jù)

在Spring Boot環(huán)境下寫一個單元測試用例,以java POJO對象接收響應結果信息

@Test
public void testPoJO() {
   String url = "http://jsonplaceholder.typicode.com/posts/1";
   PostDTO postDTO = restTemplate.getForObject(url, PostDTO.class);
   System.out.println(postDTO.toString());
}

輸出打印結果如下:

POJO的定義如下,根據(jù)JSON String的數(shù)據(jù)格式定義。

@Data
public class PostDTO {
    private int userId;
    private int id;
    private String title;
    private String body;
}

1.3.以數(shù)組的方式接收請求結果

訪問http://jsonplaceholder.typicode.com/posts 可以獲得JSON數(shù)組方式的請求結果

下一步就是我們該如何接收,使用方法也很簡單。在Spring Boot環(huán)境下寫一個單元測試用例,以數(shù)組的方式接收請求結果。

@Test
public void testArrays() {
   String url = "http://jsonplaceholder.typicode.com/posts";
   PostDTO[] postDTOs = restTemplate.getForObject(url, PostDTO[].class);
   System.out.println("數(shù)組長度:" + postDTOs.length);
}

請求的結果被以數(shù)組的方式正確接收,輸出如下:

數(shù)組長度:100

1.4.使用占位符號傳參的幾種方式

以下的幾個請求都是在訪問"http://jsonplaceholder.typicode.com/posts/1",只是使用了占位符語法,這樣在業(yè)務使用上更加靈活。

使用占位符的形式傳遞參數(shù):

String url = "http://jsonplaceholder.typicode.com/{1}/{2}";
PostDTO postDTO = restTemplate.getForObject(url, PostDTO.class, "posts", 1);

另一種使用占位符的形式:

String url = "http://jsonplaceholder.typicode.com/{type}/{id}";
String type = "posts";
int id = 1;
PostDTO postDTO = restTemplate.getForObject(url, PostDTO.class, type, id);

我們也可以使用 map 裝載參數(shù):

String url = "http://jsonplaceholder.typicode.com/{type}/{id}";
Map<String,Object> map = new HashMap<>();
map.put("type", "posts");
map.put("id", 1);
PostDTO  postDTO = restTemplate.getForObject(url, PostDTO.class, map);

二、getForEntity()方法

上面的所有的getForObject請求傳參方法,getForEntity都可以使用,使用方法上也幾乎是一致的,只是在返回結果接收的時候略有差別。使用ResponseEntity<T> responseEntity來接收響應結果。用responseEntity.getBody()獲取響應體。響應體內容同getForObject方法返回結果一致。剩下的這些響應信息就是getForEntity比getForObject多出來的內容。

HttpStatus statusCode = responseEntity.getStatusCode();獲取整體的響應狀態(tài)信息

int statusCodeValue = responseEntity.getStatusCodeValue(); 獲取響應碼值

HttpHeaders headers = responseEntity.getHeaders();獲取響應頭等

@Test
public void testEntityPoJo() {
   String url = "http://jsonplaceholder.typicode.com/posts/5";
   ResponseEntity<PostDTO> responseEntity
               = restTemplate.getForEntity(url, PostDTO.class);
   PostDTO postDTO = responseEntity.getBody(); // 獲取響應體
   System.out.println("HTTP 響應body:" + postDTO.toString());
   //以下是getForEntity比getForObject多出來的內容
   HttpStatus statusCode = responseEntity.getStatusCode(); // 獲取響應碼
   int statusCodeValue = responseEntity.getStatusCodeValue(); // 獲取響應碼值
   HttpHeaders headers = responseEntity.getHeaders(); // 獲取響應頭
   System.out.println("HTTP 響應狀態(tài):" + statusCode);
   System.out.println("HTTP 響應狀態(tài)碼:" + statusCodeValue);
   System.out.println("HTTP Headers信息:" + headers);
}

輸出打印結果

以上就是RestTemplate發(fā)送HTTP GET請求使用方法詳解的詳細內容,更多關于RestTemplate發(fā)送HTTP GET請求用法的資料請關注腳本之家其它相關文章!

相關文章

  • java中的Struts2攔截器詳解

    java中的Struts2攔截器詳解

    本篇文章主要介紹了java中的Struts2攔截器淺解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • SpringBoot入門實現(xiàn)第一個SpringBoot項目

    SpringBoot入門實現(xiàn)第一個SpringBoot項目

    今天我們一起來完成一個簡單的SpringBoot(Hello World)。就把他作為你的第一個SpringBoot項目。具有一定的參考價值,感興趣的可以了解一下
    2021-09-09
  • Java thread.isInterrupted() 返回值不確定結果分析解決

    Java thread.isInterrupted() 返回值不確定結果分析解決

    這篇文章主要介紹了Java thread.isInterrupted() 返回值不確定結果分析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2022-12-12
  • @Transactional注解:多個事務嵌套時,獨立事務處理方式

    @Transactional注解:多個事務嵌套時,獨立事務處理方式

    這篇文章主要介紹了@Transactional注解:多個事務嵌套時,獨立事務處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Spring Aop 源碼增強獲取分享

    Spring Aop 源碼增強獲取分享

    這篇文章主要介紹了Spring Aop 源碼增強獲取分享,文章圍繞主題的內容展開Spring Aop的相關介紹,具有一定的參考價值需要的小伙伴可以參考一下
    2022-05-05
  • Spring中的集合注入代碼實例

    Spring中的集合注入代碼實例

    這篇文章主要介紹了Spring中的集合注入代碼實例,集合注入是指在Spring框架中,通過配置文件或注解的方式將集合類型的數(shù)據(jù)注入到Bean中,集合類型包括List、Set、Map和Properties等,需要的朋友可以參考下
    2023-11-11
  • Springboot詳解如何實現(xiàn)SQL注入過濾器過程

    Springboot詳解如何實現(xiàn)SQL注入過濾器過程

    這篇文章主要介紹了基于springboot實現(xiàn)SQL注入過濾器,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2022-06-06
  • Kotlin基礎教程之面向對象

    Kotlin基礎教程之面向對象

    這篇文章主要介紹了Kotlin基礎教程之面向對象的相關資料,需要的朋友可以參考下
    2017-05-05
  • java如何獲取map中value的最大值

    java如何獲取map中value的最大值

    這篇文章主要介紹了java如何獲取map中value的最大值問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • java面試題之數(shù)組中的逆序對

    java面試題之數(shù)組中的逆序對

    這篇文章主要為大家詳細介紹了java面試題之數(shù)組中的逆序對,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03

最新評論