簡介
Spring3.0以下的遺留工程,由于無法使用RestTemplate,所以調(diào)用REST接口時(shí)會(huì)比較繁瑣。
通過使用第三方REST戶端框架Resty,可以大幅簡化調(diào)用過程。
Resty的優(yōu)勢是使用簡單,不需要引入過多的依賴。但相比于resttemplate/jersey/resteasy等,Resty還是過于小眾,而且已有2年時(shí)間沒有維護(hù),異常處理也不是很完善。所以只建議在老舊項(xiàng)目中使用。
本文演示了Resty各種用法,包括代理設(shè)置、Header設(shè)置等。
添加依賴
對(duì)于較老的項(xiàng)目,直接下載并添加resty-0.3.2.jar
wget http://repo1.maven.org/maven2/us/monoid/web/resty/0.3.2/resty-0.3.2.jar
如果項(xiàng)目使用了maven或gradle,直接添加依賴即可
<dependency>
<groupId>us.monoid.web</groupId>
<artifactId>resty</artifactId>
<version>0.3.2</version>
</dependency>
compile 'us.monoid.web:resty:0.3.2'
示例
初始化
String baseUrl = "http://127.0.0.1:8080/foobar";
Resty resty = new Resty();
設(shè)置代理
resty.setProxy("127.0.0.1", 8888);
設(shè)置token
resty.setOptions(new Resty.Option() {
@Override
public void apply(URLConnection aConnection) {
aConnection.setRequestProperty("Authorization", "Bearer foobarboobarfoobar");
super.apply(aConnection);
}
});
GET 查詢
String restUrl = baseUrl + "/users/4038488549360733";
JSONObject jsonObject = resty.json(restUrl).object();
String serialNumber = jsonObject.getString("serialNumber");
PUT 修改
String restUrl = baseUrl + "/users/4038488549360733";
String jsonStr = "{\"brandCode\":\"3G02\"}";
resty.json(restUrl, Resty.put(new Content("application/json", jsonStr.getBytes())));
POST 新增
String restUrl = baseUrl + "/users";
String jsonStr = "{\"brandCode\":\"3G03\"}";
resty.json(restUrl, new Content("application/json", jsonStr.getBytes()));
DELETE 刪除
String restUrl = baseUrl + "/users/4038488549360733";
resty.json(restUrl, Resty.delete());
綜合示例
String serialNumber = "12345678";
String restUrl;
JSONObject jsonObject;
JSONArray jsonArray;
String itemId = "";
try {
// 查詢用戶信息,通過serialNumber取到userId
restUrl = baseUrl + "/users?serialNumber=" + serialNumber;
jsonObject = resty.json(restUrl).object();
System.out.println(jsonObject);
String userId = jsonObject.getString("userId");
// 查詢資費(fèi)信息,通過userId取到所有資費(fèi)
restUrl = baseUrl + "/discnts?userId=" + userId;
jsonArray = resty.json(restUrl).array();
for (int i = 0; i < jsonArray.length(); i++) {
jsonObject = jsonArray.getJSONObject(i);
System.out.println(jsonObject);
// 隨機(jī)取一個(gè)itemId
itemId = jsonObject.getString("itemId");
}
// 更改資費(fèi)信息,通過itemId修改資費(fèi)信息
restUrl = baseUrl + "/discnts/" + itemId;
String jsonStr = "{\"startDate\":\"2001-01-01 20:01:02\", \"endDate\":\"2018-05-08 20:01:02\"}";
resty.json(restUrl, Resty.put(new Content("application/json", jsonStr.getBytes())));
} catch (Exception e) {
e.printStackTrace();
}