目标 对第三方的请求增加请求头信息.
-
目标在调用第三方接口时候,需要在请求里面增加请求头信息。springboot 利用restTemplate 模板进行http请求转发。
-
编写拦截器类 实现接口ClientHttpRequestInterceptor,实现具体的往请求头里面增加具体的有信息:
package com.feifan;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpRequest;
import org.springframework.http.client.ClientHttpRequestExecution;
import org.springframework.http.client.ClientHttpRequestInterceptor;
import org.springframework.http.client.ClientHttpResponse;
import java.io.IOException;
/**
* @author Donald
* @create 2019-09-28 12:26
* 自定义 请求拦截器
*/
public class UserClientInterCeptor implements ClientHttpRequestInterceptor {
@Override
public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution) throws IOException {
/// 获取请求头
HttpHeaders headers = request.getHeaders();
// 加入请求头信息
headers.add("koko","kiki");
// TODO 增加其他的请求头信息
// 执行请求
ClientHttpResponse execute = execution.execute(request, body);
System.err.println(execute.getStatusCode()+execute.getStatusText());
return execute;
}
}
- 配置Bean 的时候增加,具体的拦截器信息,
@Bean
public RestTemplate getBeanRstTemplate(RestTemplateBuilder builder )
{
RestTemplate restTemplate =
builder
//
.basicAuthentication("ki", "dd")
// 增加请求拦截器
.interceptors(new UserClientInterCeptor())
.build();
// 消息转换器
restTemplate.getMessageConverters().add(new RestMessageInterceptor());
return restTemplate;
}
- 方法调用:
@Autowired
private RestTemplate restTemplate ;
@GetMapping("header")
@ResponseBody
public Object getHeader()
{
Object forObject = restTemplate