SpringBoot的RestTemplate模板使用
1.作用:请求第三方接口
2.使用
public class Test {
RestTemplate restTemplate = null;
@PostConstruct
public void before ( ) {
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory ( ) ;
requestFactory. setConnectTimeout ( 10000 ) ;
requestFactory. setReadTimeout ( 10000 ) ;
restTemplate = new RestTemplate ( requestFactory) ;
}
private JSONObject doPostFrom ( String urlpath, MultiValueMap linkedMultiValueMap) {
HttpHeaders headers = new HttpHeaders ( ) ;
headers. setContentType ( MediaType. APPLICATION_FORM_URLENCODED) ;
HttpEntity< MultiValueMap< String, String> > request = new HttpEntity < MultiValueMap< String, String> > ( linkedMultiValueMap, headers) ;
ResponseEntity< String> entity = restTemplate. postForEntity ( urlpath, request, String. class ) ;
return JSONObject. parseObject ( entity. getBody ( ) ) ;
}
private String doGetString ( String urlpath) {
ResponseEntity< String> entity = restTemplate. getForEntity ( urlpath, String. class ) ;
String result = entity. getBody ( ) ;
return result;
}
private String preparePara ( Map< String, String> map) {
StringBuffer sb = new StringBuffer ( ) ;
sb. append ( '?' ) ;
for ( Map. Entry< String, String> m : map. entrySet ( ) ) {
sb. append ( m. getKey ( ) ) . append ( "=" ) . append ( m. getValue ( ) ) . append ( "&" ) ;
}
return sb. substring ( 0 , sb. length ( ) - 1 ) ;
}
private JSONObject doGet ( String urlpath) {
return JSONObject. parseObject ( doGetString ( urlpath) ) ;
}
public JSONObject postTest ( MultiValueMap< String, String> linkedMultiValueMap) {
String request_url = url. concat ( "/XXX/XXX" ) ;
return doPostFrom ( request_url, linkedMultiValueMap) ;
}
public JSONObject getTest ( Map< String, String> map) {
map. put ( "XXX" , "XXX" ) ;
String request_url = url. concat ( "/XXX/XXX" ) . concat ( preparePara ( map) ) ;
return doGet ( request_url) ;
}