1.1創建spring-resttmplate(jar)項目
1. RestTemplate模板對象介紹
Spring提供的用來發送http請求的對象,完成httpclient操作的封裝
1.1創建spring-resttmplate(jar)項目
1.2添加依賴
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.bjsxt.rest</groupId>
<artifactId>spring-resttemplate</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<!-- spring依賴 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.18.RELEASE</version>
</dependency>
<!-- 添加jackson依賴 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.9.3</version>
</dependency>
</dependencies>
</project>
1.3 application-server.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
">
<!-- 實例化RestTemplate對象 -->
<bean id="template" class="org.springframework.web.client.RestTemplate"></bean>
</beans>
1.4 測試restTemplate對象發送post請求
package com.bjsxt.app;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.http.HttpEntity;
import org.springframework.http.ResponseEntity;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.web.client.RestTemplate;
import com.bjsxt.pojo.Orders;
public class RestTemplateApp {
static RestTemplate template;
/***
* 測試RestTemplate對象的使用
*/
public static void main(String[] args) {
//加載Spring容器
ApplicationContext ac
=new ClassPathXmlApplicationContext("application-service.xml");
//獲得容器中的RestTemplate對象
template = (RestTemplate) ac.getBean("template");
sendPost();
}
/***
* 是RestTemplate對象發送Post
*/
public static void sendPost() {
//創建LinkedMultiValueMap封裝請求頭信息
LinkedMultiValueMap<String,String>
headers=new LinkedMultiValueMap<String,String>();
headers.add("Content-Type", "application/x-www-form-urlencoded");
//封裝請求體數據
LinkedMultiValueMap<String,String> body=
new LinkedMultiValueMap<String,String>();
body.add("vid", "12345678");
//創建HttpEntity對象,封裝請求體和請求頭信息
HttpEntity<LinkedMultiValueMap<String,String>>
entity=new HttpEntity<>(body,headers);
String url="http://localhost:8081/loadOrdersList";
//發送http,post請求,獲得請求體
//Orders[] results=template.postForObject(url,entity, Orders[].class);
//List<Orders> asList = Arrays.asList(results);
//發送http,post請求,響應回來請求頭和請求體
ResponseEntity<Orders[]> response
= template.postForEntity(url,entity, Orders[].class);
//獲得請求頭
int statusCodeValue = response.getStatusCodeValue();
System.out.println(statusCodeValue);
//獲得請求體
Orders[] results = response.getBody();
for(Orders orders:results) {
System.out.println(orders.getId()+"\t"+orders.getRemark()
+"\t"+orders.getOdate()+"\t"+orders.getVip());
}
}
/***
* 是RestTemplate對象發送Get
*/
/***
* 是RestTemplate發送Post請求,提交json字符串
*/
}
1.5使用RestTemplate對象發送Get請求
/***
* 是RestTemplate對象發送Get
*/
public static void sendGet() {
String url="http://localhost:8081/loadOrders?id=888888";
/***
* ResponseEntity 封裝了請求頭和請求體
*/
//ResponseEntity<Orders> entity = template.getForEntity(url, Orders.class);
//Orders orders = entity.getBody();
//只獲得請求體
Orders orders = template.getForObject(url, Orders.class);
System.out.println(orders.getId()+"\t"+orders.getRemark()
+"\t"+orders.getVip()+"\t"+orders.getOdate());
}
1.6 使用RestTemplate對象發送Post請求
/***
* 是RestTemplate發送Post請求,提交json字符串
*/
public static void sendPostObject() {
//創建Orders對象
Orders orders=new Orders();
orders.setId(77777777);
orders.setRemark("週末配送....");
orders.setOdate("2010-10-10");
orders.setVip(99999);
//封裝請求頭信息
HttpHeaders header=new HttpHeaders();
header.setContentType(MediaType.APPLICATION_JSON_UTF8);
//將javabean對象轉化爲json字符串
String jsonString = JSON.toJSONString(orders);
//將請求體和請求頭信息封裝
HttpEntity<String> entity=new HttpEntity<String>(jsonString,header);
String url="http://localhost:8081/saveOrders";
//發送post請求
Map result = template.postForObject(url, entity, Map.class);
System.out.println(result);
}
代碼總結:
import java.util.Map;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.web.client.RestTemplate;
import com.alibaba.fastjson.JSON;
import com.bjsxt.pojo.Orders;
import com.fasterxml.jackson.databind.util.JSONPObject;
public class RestTemplateTest {
static RestTemplate template;
public static void main(String[] args) {
// 加載Spring容器
ApplicationContext ac = new ClassPathXmlApplicationContext("application-service.xml");
// 獲得容器中的RestTemplate對象
template = (RestTemplate) ac.getBean("template");
sendObject();
}
// 發送post請求
public static void sendPost() {
// 創建LinkedMultiValueMap封裝請求頭信息
LinkedMultiValueMap<String, String> headers = new LinkedMultiValueMap<String, String>();
headers.add("Content-Type", "application/x-www-form-urlencoded");
// 封裝請求體數據
LinkedMultiValueMap<String, String> body = new LinkedMultiValueMap<String, String>();
body.add("vid", "12345678");
// 創建HttpEntity對象,封裝請求體和請求頭信息
HttpEntity<LinkedMultiValueMap<String, String>> entity = new HttpEntity<>(body, headers);
String url = "http://localhost:8081/loadOrdersList";
// 發送http,post請求,獲得請求體
// Orders[] results=template.postForObject(url,entity, Orders[].class);
// List<Orders> asList = Arrays.asList(results);
// 發送http,post請求,響應回來請求頭和請求體
ResponseEntity<Orders[]> response = template.postForEntity(url, entity, Orders[].class);
// 獲得請求頭
int statusCodeValue = response.getStatusCodeValue();
System.out.println(statusCodeValue);
// 獲得請求體
Orders[] results = response.getBody();
for (Orders orders : results) {
System.out.println(
orders.getId() + "\t" + orders.getRemark() + "\t" + orders.getOdate() + "\t" + orders.getVip());
}
}
// 發送get請求
public static void sendGet() {
String url = "http://localhost:8081/selectOrder?id=88888";
ResponseEntity<Orders> response = template.getForEntity(url, Orders.class);
Orders body = response.getBody();
System.out.println(body);
}
// 發送對象json字符串
public static void sendObject() {
// 創建Orders對象
Orders orders = new Orders();
orders.setId(77777777);
orders.setRemark("週末配送....");
orders.setOdate("2010-10-10");
orders.setVip(99999);
String url="http://localhost:8081/addOrders";
//把對象封裝爲json字符串
String jsonString = JSON.toJSONString(orders);
//封裝響應頭爲json'格式的響應
HttpHeaders header=new HttpHeaders();
header.setContentType(MediaType.APPLICATION_JSON_UTF8);
//傳入兩個對象(第一個是請求體、第二個是請求頭)
HttpEntity<String>request=new HttpEntity<>(jsonString,header);
Map<String, String>map
= template.postForObject(url, request, Map.class);
System.out.println(map);
}
}