Java 带rest模板的Spring引导拦截器自定义头承载器

Java 带rest模板的Spring引导拦截器自定义头承载器,java,spring,spring-boot,spring-mvc,Java,Spring,Spring Boot,Spring Mvc,有谁能给我一个如何使用resttemplate实现对自定义头端点的拦截器的线索吗。我有一个服务需要令牌来访问它,但是从其他API生成的令牌,我如何使用rest模板自动完成它,而无需在标头中手动添加令牌?我已经实现了拦截器,并将rest令牌端点放在其中,但无法授权。怎样做才是正确的方法?下面是我如何实现下面的代码: @PostMapping("/send") public ResponseEntity<ResponseDto> send(@Request

有谁能给我一个如何使用resttemplate实现对自定义头端点的拦截器的线索吗。我有一个服务需要令牌来访问它,但是从其他API生成的令牌,我如何使用rest模板自动完成它,而无需在标头中手动添加令牌?我已经实现了拦截器,并将rest令牌端点放在其中,但无法授权。怎样做才是正确的方法?下面是我如何实现下面的代码:

   @PostMapping("/send")
   public ResponseEntity<ResponseDto> send(@RequestBody String message) throws NoSuchAlgorithmException {


       MessageDigest md = MessageDigest.getInstance("MD5");
       md.update(message.getBytes());
       String md5 = DatatypeConverter.printHexBinary(md.digest());

       System.out.println("Sending Message");

       String authToken = "http://localhost:8090/getToken";

       RestTemplate restTemplate = new RestTemplateBuilder(rt-> rt.getInterceptors().add((request, body, execution) -> {
           request.getHeaders().add("Authorization", "Bearer "+ authToken);
           return execution.execute(request, body);
       })).build();

       HttpHeaders headers = new HttpHeaders();
//       headers.add("Authorization", "Bearer " + authToken);
       headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
       headers.setContentType(MediaType.TEXT_PLAIN);

       HttpEntity<String> entity = new HttpEntity<>("token", headers);
       restTemplate.postForEntity(REST_SEND_MSG, entity, ResponseDto.class);
       try{
           return new ResponseEntity<ResponseDto>(new ResponseDto("SUCCESS", md5), HttpStatus.OK);
       }catch (HttpClientErrorException e){
           return new ResponseEntity<ResponseDto>(new ResponseDto("FORBIDDEN", md5), HttpStatus.FORBIDDEN);
       }

   }
@PostMapping(“/send”)
public ResponseEntity send(@RequestBody String message)抛出NoSuchAlgorithmException{
MessageDigest md=MessageDigest.getInstance(“MD5”);
md.update(message.getBytes());
字符串md5=DatatypeConverter.printHexBinary(md.digest());
System.out.println(“发送消息”);
字符串authToken=”http://localhost:8090/getToken";
RestTemplate RestTemplate=新建RestTemplateBuilder(rt->rt.getInterceptors().add((请求、正文、执行)->{
request.getHeaders().add(“授权”、“承载人”+authToken);
返回执行。执行(请求,正文);
})).build();
HttpHeaders=新的HttpHeaders();
//添加(“授权”、“承载人”+authToken);
setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
headers.setContentType(MediaType.TEXT\u PLAIN);
HttpEntity=新的HttpEntity(“令牌”,标题);
postForEntity(REST\u发送消息、实体、响应到.class);
试一试{
返回新的ResponseEntity(newresponseTo(“SUCCESS”,md5),HttpStatus.OK);
}捕获(HttpClientErrorE异常){
返回新的ResponseEntity(新的ResponseTo(“禁止”,md5),HttpStatus.FORBIDDEN);
}
}
我已经为HttpRequest添加了getInterceptors()以从body获取令牌

请参见此链接