最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前言

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

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

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

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

getForObject()

getForEntity()

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

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

一、 getForObject() 方法

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

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

@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響應(yīng)結(jié)果,

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

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

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

輸出打印結(jié)果如下:

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ù)組的方式接收請求結(jié)果

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

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

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

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

數(shù)組長度:100

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

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

使用占位符的形式傳遞參數(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都可以使用,使用方法上也幾乎是一致的,只是在返回結(jié)果接收的時候略有差別。使用ResponseEntity<T> responseEntity來接收響應(yīng)結(jié)果。用responseEntity.getBody()獲取響應(yīng)體。響應(yīng)體內(nèi)容同getForObject方法返回結(jié)果一致。剩下的這些響應(yīng)信息就是getForEntity比getForObject多出來的內(nèi)容。

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

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

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

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

輸出打印結(jié)果

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

相關(guān)文章

  • Java實現(xiàn)鏈棧的示例代碼

    Java實現(xiàn)鏈棧的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何使用鏈?zhǔn)酱鎯Y(jié)構(gòu)來實現(xiàn)棧,也就是鏈棧的實現(xiàn),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-11-11
  • 小議Java中final關(guān)鍵字使用時的注意點

    小議Java中final關(guān)鍵字使用時的注意點

    final關(guān)鍵字代表著最后、不可改變,無論是在用final修飾類、修飾方法還是修飾變量時,都要注意內(nèi)存分配的問題.這里來小議Java中final關(guān)鍵字使用時的注意點:
    2016-06-06
  • JAVA構(gòu)造函數(shù)不能使用void關(guān)鍵字問題

    JAVA構(gòu)造函數(shù)不能使用void關(guān)鍵字問題

    這篇文章主要介紹了JAVA構(gòu)造函數(shù)不能使用void關(guān)鍵字問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Java并發(fā)編程 interrupt()方法示例詳解

    Java并發(fā)編程 interrupt()方法示例詳解

    interrrupt()方法可以用來打斷正在運行的線程,也可以打斷sleep()、wait()、join()情況下的線程,但是這些情況下被打斷線程的打斷標(biāo)記不同,這篇文章主要介紹了Java并發(fā)編程 interrupt()方法示例詳解,需要的朋友可以參考下
    2023-06-06
  • Java微信公眾平臺開發(fā)(10) 微信自定義菜單的創(chuàng)建實現(xiàn)

    Java微信公眾平臺開發(fā)(10) 微信自定義菜單的創(chuàng)建實現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了Java微信公眾平臺開發(fā)第十步,微信自定義菜單的創(chuàng)建實現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • JWT在OpenFeign調(diào)用中進(jìn)行令牌中繼詳解

    JWT在OpenFeign調(diào)用中進(jìn)行令牌中繼詳解

    Feign是一個聲明式的Web Service客戶端,是一種聲明式、模板化的HTTP客戶端。而OpenFeign是Spring Cloud 在Feign的基礎(chǔ)上支持了Spring MVC的注解,如@RequesMapping等等,這篇文章主要給大家介紹了關(guān)于JWT在OpenFeign調(diào)用中進(jìn)行令牌中繼的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • java利用Tabula實現(xiàn)對PDF內(nèi)表格數(shù)據(jù)提取

    java利用Tabula實現(xiàn)對PDF內(nèi)表格數(shù)據(jù)提取

    Tabula是一個開源工具,用于從PDF文檔中提取表格數(shù)據(jù),下面小編就來和大家詳細(xì)介紹一下java如何通過Tabula對PDF文件內(nèi)表格進(jìn)行數(shù)據(jù)提取吧
    2023-09-09
  • 自定義application.yml配置項方式

    自定義application.yml配置項方式

    這篇文章主要介紹了自定義application.yml配置項方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Java關(guān)鍵字this(動力節(jié)點Java學(xué)院整理)

    Java關(guān)鍵字this(動力節(jié)點Java學(xué)院整理)

    java中的this隨處可見,用法也多。通常情況下理解this關(guān)鍵字還是很容易的,但是在我初學(xué)的時候,有一個疑問卻一直不能很清晰的理解,現(xiàn)在慢慢的理解了,下面通過本文給大家記錄下,有需要的朋友參考下
    2017-03-03
  • java 線程中start方法與run方法的區(qū)別詳細(xì)介紹

    java 線程中start方法與run方法的區(qū)別詳細(xì)介紹

    這篇文章主要介紹了java 線程中start方法與run方法的區(qū)別詳細(xì)介紹的相關(guān)資料,在java線程中調(diào)用start方法與run方法的區(qū)別在哪里? 這兩個問題是兩個非常流行的初學(xué)者級別的多線程面試問題,這里進(jìn)行詳細(xì)說明,需要的朋友可以參考下
    2016-11-11

最新評論

乡宁县| 阿瓦提县| 福泉市| 礼泉县| 正蓝旗| 黑山县| 六安市| 武陟县| 巴中市| 余姚市| 鹿泉市| 青海省| 平舆县| 麦盖提县| 龙岩市| 固阳县| 梁河县| 韶关市| 招远市| 漾濞| 改则县| 大丰市| 新闻| 南部县| 古交市| 浦江县| 兴安盟| 宾川县| 巧家县| 潮安县| 酉阳| 天祝| 奉新县| 娱乐| 英德市| 肥城市| 沙河市| 三江| 宝应县| 株洲市| 成都市|