Java WebClient-添加DefaultHeader

Java WebClient-添加DefaultHeader,java,spring,spring-boot,webclient,spring-webflux,Java,Spring,Spring Boot,Webclient,Spring Webflux,我试图将多个头放入defaultHeaders()中,但我不知道如何从createHeaders()方法的返回创建使用者对象 但如何将其包装到消费者中?您可以这样做: WebClient client3 = WebClient .builder() .baseUrl(someConfiguration.getApiUrl()) .clientConnector(buildTimeoutConnector()) .defaultHeade

我试图将多个头放入defaultHeaders()中,但我不知道如何从createHeaders()方法的返回创建使用者对象


但如何将其包装到消费者中?

您可以这样做:

WebClient client3 = WebClient
      .builder()
        .baseUrl(someConfiguration.getApiUrl())
        .clientConnector(buildTimeoutConnector())
        .defaultHeader(HttpHeaders.ACCEPT, V1_PUBLIC) 
        .defaultHeader(HttpHeaders.HOST, "abc") 
        .defaultHeader(HttpHeaders.AUTHORIZATION, "Bearer " + token) 
      .build();

很明显,方法文档说它需要某种类型的
消费者。因此,您可以创建一个实现
消费者
接口的匿名类
,或者像这样使用lambda表达式

  • 使用匿名内部类:
  • private HttpHeaders createHeaders(String token) {
        HttpHeaders headers = new HttpHeaders();
        headers.add(HttpHeaders.ACCEPT, V1_PUBLIC);
        headers.add(HttpHeaders.HOST, "abc");
        headers.add(HttpHeaders.AUTHORIZATION, "Bearer " + token);
        return headers;
    }
    
    WebClient client3 = WebClient
          .builder()
            .baseUrl(someConfiguration.getApiUrl())
            .clientConnector(buildTimeoutConnector())
            .defaultHeader(HttpHeaders.ACCEPT, V1_PUBLIC) 
            .defaultHeader(HttpHeaders.HOST, "abc") 
            .defaultHeader(HttpHeaders.AUTHORIZATION, "Bearer " + token) 
          .build();
    
    this.someWebClient = WebClient.builder()
            .baseUrl(someConfiguration.getApiUrl())
            .clientConnector(buildTimeoutConnector())
            .defaultHeaders(new Consumer<HttpHeaders>() {
              @Override
              public void accept(HttpHeaders httpHeaders) {
                httpHeaders.addAll(createHeaders(token));
              }
            })
            .build();
    
    this.someWebClient = WebClient.builder()
            .baseUrl(someConfiguration.getApiUrl())
            .clientConnector(buildTimeoutConnector())
            .defaultHeaders(httpHeaders -> {
              httpHeaders.addAll(createHeaders(token));
            })
            .build();