RestTemplate是Spring提供的用於訪問Rest服務的客戶端,RestTemplate提供了多種便捷訪問遠程Http服務的方法,能夠大大提高客戶端的編寫效率。
調用RestTemplate的默認構造函數,RestTemplate對象在底層通過使用java.net包下的實現創建HTTP 請求,可以通過使用ClientHttpRequestFactory指定不同的HTTP請求方式。
ClientHttpRequestFactory接口主要提供了兩種實現方式
- 一種是SimpleClientHttpRequestFactory,使用J2SE提供的方式(既java.net包提供的方式)創建底層的Http請求連接。
- 一種方式是使用HttpComponentsClientHttpRequestFactory方式,底層使用HttpClient訪問遠程的Http服務,使用HttpClient可以配置連接池和證書等信息。
private RestTemplate createRestTemplate(){ HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory() requestFactory.setConnectTimeout(connectTimeout); requestFactory.setReadTimeout(readTimeout); RestTemplate restTemplate = new RestTemplate(requestFactory); restTempate.getMessageConverters().add(0,new MyStringHttpMessageConverter()); return restTemplatet }
RestTemplate的getForObject完成get請求、postForObject完成post請求、put對應的完成put請求、delete完成delete請求;還有execute可以執行任何請求的方法,需要你設置RequestMethod來指定當前請求類型。
RestTemplate.getForObject(String url, Class responseType, String... urlVariables)
String content = getXMLContent(carNo); HttpHeaders headers = new HttpHeaders(); MediaType type = new MediaType("text","xml",Charset.forName(CHARSET_GBK)); headers.setContentType(true); HttpEntity<String> entity = new HttpEntity<String>(content,headers); long ss = System.nanoTime(); String result = restTemplate.postForObject(url,entity,String.class);
添加applicationContext-beans.xml完成對restTemplate的配置。restTemplate需要配置MessageConvert將返回的xml文檔進行轉換,解析成JavaObject。