精講RestTemplate第4篇-POST請求方法使用詳解
阿新 • • 發佈:2020-08-09
本文是精講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