簡介:
RestTemplate是Spring提供的用於訪問Rest服務的客戶端,RestTemplate提供了多種便捷訪問遠程Http服務的方法,能夠大大提高客戶端的編寫效率。一般情況下java代碼裏訪問restful服務,使用Apache
的HttpClient
。不過此種方法使用起來太過繁瑣。
定義一個簡單的Restful接口
@Controller
@RequestMapping("tpservice")
public class Tpservice {
@ResponseBody
@RequestMapping(value = "singleRecordSearch",method = RequestMethod.GET)
public String JsonTest(@RequestParam String hphm,@RequestParam String hpzl) {
ReturnValue r = new ReturnValue();
TrafficPermit t = new TrafficPermit();
t.setHphm("津A12345");
t.setHpzl("01");
t.setJxsd("週一、週五&07:00-09:00&早高峯,週二、週三&07:00-09:00&晚高峯");
t.setTxqsrq(new Date());
t.setTxjzrq(new Date());
t.setTxxl("米東區/稻香南路,米東區/東華北路");
t.setTxzbh("NO.123456789");
t.setTxzmc("中型車通行證");
r.setCode(1);
r.setMessage("成功");
r.setData(t);
return JSON.toJSONString(r);
}
}
使用RestTemplate訪問該服務
1、封裝成工具類HttpTools
public class HttpTools{
public static ReturnValue sendPostRequest(String url, MultiValueMap<String, String> params){
RestTemplate client = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
HttpMethod method = HttpMethod.GET;
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(params, headers);
ResponseEntity<ReturnValue> response = client.exchange(url, method, requestEntity, ReturnValue.class);
return response.getBody();
}
}
2、訪問測試:
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
/*封裝參數,有幾個封裝幾個*/
params.add("hphm", pv.getHphm());
params.add("hpzl", pv.getHpzl());
ReturnValue rv = HttpTools.sendPostRequest("http://"+tpsIp+":"+tpsPort+"/"+tpsMethodPath+"", params);
public class ReturnValue {
private int code;
private String message;
private TrafficPermitSyn data;
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public TrafficPermitSyn getData() {
return data;
}
public void setData(TrafficPermitSyn data) {
this.data = data;
}
}