Parameter specified as non-null is null: method okhttp3.Request$Builder.addHeader after Spring Boot 3.x

105 Views Asked by At

After Spring Boot 3.x version, an error is received when passing a null header to Resttemplate. Is there any way to overcome this situation? Error:

java.lang.NullPointerException: Parameter specified as non-null is null: method okhttp3.Request$Builder.addHeader, parameter value
    at okhttp3.Request$Builder.addHeader(Request.kt) ~[okhttp-4.11.0.jar:?]
    at org.springframework.http.client.OkHttp3ClientHttpRequest.lambda$executeInternal$0(OkHttp3ClientHttpRequest.java:91) ~[spring-web-6.1.3.jar:6.1.3]

RestTemplateConfig class

public class RestTemplateConfig {

    @Bean
    @LoadBalanced
    public RestTemplate restTemplate(RestTemplateBuilder builder) {
        return builder.additionalInterceptors(createCustomHeadersInterceptor()).build();
    }

    public ClientHttpRequestInterceptor createCustomHeadersInterceptor() {
        return (request, body, execution) -> {
            UserContext userContext = ContextHolder.getCurrentContext().getUserContext();
            HttpHeaders headers = request.getHeaders();
            headers.setContentType(MediaType.APPLICATION_JSON);
            headers.add(HeaderKeys.GUID, userContext.getGuid() != null ? userContext.getGuid() : null);
            headers.add(HeaderKeys.USERNAME, userContext.getUsername());

            return execution.execute(request, body);
        };
    }
}

Example Request

@Autowired
private RestTemplate restTemplate;

ResponseEntity<ServiceResponse<Boolean>> response = restTemplate.exchange(serviceUrl,
                HttpMethod.POST,
                request,
                new ParameterizedTypeReference<ServiceResponse<Boolean>>() {
                });

Resttemplate gives an error if one of the passed Headers is Null for Exemple:

headers.add(HeaderKeys.GUID, userContext.getGuid() != null ? userContext.getGuid() : null);

How Can I fix?

0

There are 0 best solutions below