开发中使用RestTemplate来进行访问,设置请求头的方法:
方法一:单独设置
public class TestRestTemplate { @Autowired private RestTemplate restTemplate; public void postObject(String id){ String url="http://www.baidu.com"; MultiValueMap<String, String> map = new LinkedMultiValueMap<>(); map.add("id",id); HttpHeaders header = new HttpHeaders(); // 需求需要传参为form-data格式 header.setContentType(MediaType.MULTIPART_FORM_DATA); HttpEntity<MultiValueMap<String, String>> httpEntity = new HttpEntity<>(map, header); JSONObject response = restTemplate.postForObject(url, httpEntity, JSONObject.class); } }
方法二:公共设置,使用interceptor拦截器设置
1.添加拦截器
public class HeaderRequestInterceptor implements ClientHttpRequestInterceptor { private final String headerName; private final String headerValue; public HeaderRequestInterceptor(String headerName, String headerValue) { this.headerName = headerName; this.headerValue = headerValue; } @Override public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution) throws IOException { request.getHeaders().set(headerName, headerValue); return execution.execute(request, body); }
2.配置RestTemplate Bean
@Configuration public class RestTemplateConfig { @Bean public RestTemplate restTemplate() { List<ClientHttpRequestInterceptor> interceptors = new ArrayList<>(); interceptors.add(new HeaderRequestInterceptor("token", "123")); RestTemplate restTemplate = new RestTemplate(); restTemplate.setInterceptors(interceptors); return restTemplate; } }
3.使用RestTemplate Bean
@Autowired private RestTemplate restTemplate;