當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
【Spring学习】RestTemplate访问Rest服务总结
生活随笔
收集整理的這篇文章主要介紹了
【Spring学习】RestTemplate访问Rest服务总结
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
RestTemplate是Spring提供的用于訪問Rest服務的客戶端,RestTemplate提供了多種便捷訪問遠程Http服務的方法,能夠大大提高客戶端的編寫效率。調用RestTemplate的默認構造函數,RestTemplate對象在底層通過使用java.net包下的實現創建HTTP 請求,可以通過使用ClientHttpRequestFactory指定不同的HTTP請求方式。
ClientHttpRequestFactory接口主要提供了兩種實現方式,一種是SimpleClientHttpRequestFactory,使用J2SE提供的方式(既java.net包提供的方式)創建底層的Http請求連接,還有一種方式是使用HttpComponentsClientHttpRequestFactory方式,底層使用HttpClient訪問遠程的Http服務,使用HttpClient可以配置連接池和證書等信息。
RestTemplate構造方法:
HTTP POST請求: public <T> T postForObject(String url, Object request, Class<T> responseType, Object... uriVariables)throws RestClientException public <T> T postForObject(String url, Object request, Class<T> responseType, Map<String, ?> uriVariables)throws RestClientException public <T> T postForObject(URI url, Object request, Class<T> responseType) throws RestClientException 示例: /*** 使用RestTemplate發送HTTP POST請求* @param url 請求地址* @param reqStr 請求參數* @param connectionTimeout 連接超時時間* @param socketTimeout socket超時時間* @return String 返回報文*/public String postRest(String url, String reqStr,int connetionTimeOut, int socketTimeOut) {ResponseEntity<String> responseEntity0 = null;HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();requestFactory.setConnectTimeout(connetionTimeOut);requestFactory.setReadTimeout(socketTimeOut);RestTemplate restTemplate = new RestTemplate(requestFactory);HttpHeaders headers = new HttpHeaders();headers.set("Content-Type", "text/plain;charset=UTF-8");//解決請求亂碼問題headers.set("Accept", "text/plain;charset=UTF-8");headers.set("User-Agent","CLIENT(zk/1.2.1;android/1.0;640*480;MOT-XT800)");String body=null;try {responseEntity0 = restTemplate.postForEntity(url,new HttpEntity<String>(reqStr, headers), String.class);logger.debug("響應標頭:responseEntity0.getHeaders="+ responseEntity0.getHeaders());body=new String(responseEntity0.getBody().getBytes("ISO-8859-1"), "utf-8");//解決返回報文的亂碼問題logger.debug("響應字符串:responseEntity0.getBody()="+ responseEntity0.getBody());} catch (Exception e) {logger.error(" errpr happened in postRest(),", e);}return body; } HTTP GET請求: //url:請求地址 responseType:返回值類型 urlVariables:請求中需要設置的參數 restTemplate.getForObject(String url,Class responseType,String… urlVariables);//url:請求地址 responseType:返回值類型 inParams:請求中需要設置參數的Map集合 restTemplate.getForObject(String url,Class responseType,Map inParams); 注意:RestTemplate默認是使用org.springframework.http.converter.StringHttpMessageConverter來解析。StringHttpMessageConverter默認用ISO-8859-1來編碼,所以再接收返回報文時可能會因此出現亂碼的情況。
總結
以上是生活随笔為你收集整理的【Spring学习】RestTemplate访问Rest服务总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HttpURLConnection总结
- 下一篇: 【Spring源码】从源码实现的角度解析