1. 程式人生 > >精講RestTemplate第4篇-POST請求方法使用詳解

精講RestTemplate第4篇-POST請求方法使用詳解

本文是精講RestTemplate第4篇,前篇的blog訪問地址如下: * [精講RestTemplate第1篇-在Spring或非Spring環境下如何使用](http://www.zimug.com/java/spring/%e7%b2%be%e8%ae%b2resttemplate%e7%ac%ac1%e7%af%87-%e5%9c%a8spring%e6%88%96%e9%9d%9espring%e7%8e%af%e5%a2%83%e4%b8%8b%e5%a6%82%e4%bd%95%e4%bd%bf%e7%94%a8/.html) * [精講RestTemplate第2篇-多種底層HTTP客戶端類庫的切換](http://www.zimug.com/java/spring/%e7%b2%be%e8%ae%b2resttemplate%e7%ac%ac2%e7%af%87-%e5%a4%9a%e7%a7%8d%e5%ba%95%e5%b1%82http%e5%ae%a2%e6%88%b7%e7%ab%af%e7%b1%bb%e5%ba%93%e7%9a%84%e5%88%87%e6%8d%a2/.html) * [精講RestTemplate第3篇-GET請求使用方法詳解](http://www.zimug.com/java/spring/%e7%b2%be%e8%ae%b2resttemplate%e7%ac%ac3%e7%af%87-get%e8%af%b7%e6%b1%82%e4%bd%bf%e7%94%a8%e6%96%b9%e6%b3%95%e8%af%a6%e8%a7%a3/.html) **如果您閱讀完本文章,覺得對您有幫助,請幫忙點個贊,您的支援是我不竭的創作動力** 在上一節為大家介紹了RestTemplate的GET請求的兩個方法:getForObject()和getForEntity()。其實POST請求方法和GET請求方法上大同小異,RestTemplate的POST請求也包含兩個主要方法: * postForObject() * postForEntity() 二者的主要區別在於,postForObject()返回值是HTTP協議的響應體。postForEntity()返回的是ResponseEntity,ResponseEntity是對HTTP響應的封裝,除了包含響應體,還包含HTTP狀態碼、contentType、contentLength、Header等資訊。 ## 一、postForObject傳送JSON格式請求 寫一個單元測試用例,測試用例的內容是向指定的URL提交一個Post(帖子). ~~~ @SpringBootTest class PostTests { @Resource private RestTemplate restTemplate; @Test void testSimple() { // 請求地址 String url = "http://jsonplaceholder.typicode.com/posts"; // 要傳送的資料物件 PostDTO postDTO = new PostDTO(); postDTO.setUserId(110); postDTO.setTitle("zimug 釋出文章"); postDTO.setBody("zimug 釋出文章 測試內容"); // 傳送post請求,並輸出結果 PostDTO result = restTemplate.postForObject(url, postDTO, PostDTO.class); System.out.println(result); } } ~~~ * jsonplaceholder.typicode.com是一個可以提供線上免費RESTful測試服務的一個網站 * ”/posts"服務接收PostDTO 引數物件,並將請求結果以JSON字串的形式進行響應。響應結果就是請求引數物件對應的JSON字串。 * 所以postForObject方法第二個引數是請求資料物件,第三個引數是返回值型別 最終將返回值的列印結果如下: ![](https://img2020.cnblogs.com/other/1815316/202008/1815316-20200809085630928-1249333766.png) ## 二、postForObject模擬表單資料提交 下面給大家寫一個使用postForObject模擬表單資料提交的例子,即:提交x-www-form-urlencoded格式的資料 ~~~ @Test public void testForm() { // 請求地址 String url = "http://jsonplaceholder.typicode.com/posts"; // 請求頭設定,x-www-form-urlencoded格式的資料 HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); //提交引數設定 Multi