日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

【Spring学习】RestTemplate访问Rest服务总结

發布時間:2024/4/14 javascript 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【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構造方法:

public RestTemplate(){//初始化過程messageConverters = new ArrayList();errorHandler = new DefaultResponseErrorHandler();headersExtractor = new HeadersExtractor();messageConverters.add(new ByteArrayHttpMessageConverter());messageConverters.add(new StringHttpMessageConverter());//StringHttpMessageConverter的默認編碼是ISO-8859-1,可能會導致接收的返回報文出現亂碼messageConverters.add(new ResourceHttpMessageConverter());messageConverters.add(new SourceHttpMessageConverter());messageConverters.add(new AllEncompassingFormHttpMessageConverter());if(romePresent){messageConverters.add(new AtomFeedHttpMessageConverter());messageConverters.add(new RssChannelHttpMessageConverter());}if(jaxb2Present)messageConverters.add(new Jaxb2RootElementHttpMessageConverter());if(jackson2Present)messageConverters.add(new MappingJackson2HttpMessageConverter());elseif(jacksonPresent)messageConverters.add(new MappingJacksonHttpMessageConverter()); }//實現超時 public RestTemplate(ClientHttpRequestFactory requestFactory){this();setRequestFactory(requestFactory); } 第一個構造方法進行默認初始化,第二個構造方法可以傳入ClientHttpRequestFactory參數,因為有時我們需要對請求時間進行設置,或者對超時進行處理,ClientHttpRequestFactory接口的實現類中有timeout屬性,可以滿足我們的需要。
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服务总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。