當(dāng)前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
【Spring学习】RestTemplate访问Rest服务总结
生活随笔
收集整理的這篇文章主要介紹了
【Spring学习】RestTemplate访问Rest服务总结
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
RestTemplate是Spring提供的用于訪問Rest服務(wù)的客戶端,RestTemplate提供了多種便捷訪問遠(yuǎn)程Http服務(wù)的方法,能夠大大提高客戶端的編寫效率。調(diào)用RestTemplate的默認(rèn)構(gòu)造函數(shù),RestTemplate對象在底層通過使用java.net包下的實(shí)現(xiàn)創(chuàng)建HTTP 請求,可以通過使用ClientHttpRequestFactory指定不同的HTTP請求方式。
ClientHttpRequestFactory接口主要提供了兩種實(shí)現(xiàn)方式,一種是SimpleClientHttpRequestFactory,使用J2SE提供的方式(既java.net包提供的方式)創(chuàng)建底層的Http請求連接,還有一種方式是使用HttpComponentsClientHttpRequestFactory方式,底層使用HttpClient訪問遠(yuǎn)程的Http服務(wù),使用HttpClient可以配置連接池和證書等信息。
RestTemplate構(gòu)造方法:
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發(fā)送HTTP POST請求* @param url 請求地址* @param reqStr 請求參數(shù)* @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("響應(yīng)標(biāo)頭:responseEntity0.getHeaders="+ responseEntity0.getHeaders());body=new String(responseEntity0.getBody().getBytes("ISO-8859-1"), "utf-8");//解決返回報文的亂碼問題logger.debug("響應(yīng)字符串:responseEntity0.getBody()="+ responseEntity0.getBody());} catch (Exception e) {logger.error(" errpr happened in postRest(),", e);}return body; } HTTP GET請求: //url:請求地址 responseType:返回值類型 urlVariables:請求中需要設(shè)置的參數(shù) restTemplate.getForObject(String url,Class responseType,String… urlVariables);//url:請求地址 responseType:返回值類型 inParams:請求中需要設(shè)置參數(shù)的Map集合 restTemplate.getForObject(String url,Class responseType,Map inParams); 注意:RestTemplate默認(rèn)是使用org.springframework.http.converter.StringHttpMessageConverter來解析。StringHttpMessageConverter默認(rèn)用ISO-8859-1來編碼,所以再接收返回報文時可能會因此出現(xiàn)亂碼的情況。
總結(jié)
以上是生活随笔為你收集整理的【Spring学习】RestTemplate访问Rest服务总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HttpURLConnection总结
- 下一篇: 【REST】基于RESTful服务端的客