对象构建
-
使用工厂方法创建
@Bean public RestTemplate restTemplate(ClientHttpRequestFactory factory) { RestTemplate restTemplate = new RestTemplate(factory); return restTemplate; } @Bean public ClientHttpRequestFactory simpleClientHttpRequestFactory() { SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory(); factory.setReadTimeout(5000);//读取超时时间 factory.setConnectTimeout(15000);//连接超时时间 // 设置代理 //factory.setProxy(null); return factory; }
-
直接new
可以如上新建factory后直接给restTemplate setfactory
发请求
-
使用*ForObject,直接返回相应页面
String result restTemplate.getForobject(url,String.class);
get传参:直接拼接url
post传body:直接传实体Bean
String result restTemplate.postForobject(url,user,string.class);
post传表单:数据放在LinkedMultiValueMap里
LinkedMultiValueMap<String, String> map = new LinkedMultiValueMap<String, String>; map.add("name","n1"); ResponseEntity<String> entity = restTemplate.postForEntity("url",map,String.class);
添加Header
RequestEntity<JSONObject> requestEntity = RequestEntity.post(uri). // 添加 cookie header(HttpHeaders.COOKIE,"key1=value1"). // 添加 header header("MyRequestHeader", "MyValue"). accept(MediaType.APPLICATION_JSON). contentType(MediaType.APPLICATION_JSON). body(requestParam); ResponseEntity<JSONObject> responseEntity = restTemplate.exchange(requestEntity,JSONObject.class);
-
用*ForEntity,返回整个响应的各个部分
ResponseEntity<String> entity = restTemplate.getForEntity("url",String.class);
@LoadBalanced
SpringCloud提供的注解,用于实现客户端负载均衡。加在注册RestTemplate时