@Test方法中使用restTemplate报错null(NullPointerException)

发布时间 2023-10-11 16:13:02作者: longkui

原文链接:https://www.longkui.site/error/resttemplate/4821/

0.背景

需要在@Test 单元测试中掉调用一个http请求,用的是RestTemplate。当时测试的代码如下:

 HttpEntity<Object> requestEntity = new HttpEntity<>(map, requestHeaders);
 ResponseEntity result = restTemplate.exchange("https://xxxx/xxx/xx",
                    HttpMethod.POST, requestEntity, String.class);
其中,map的数据对象。但是当我们执行@Test时,直接报错空指针。




2.解决办法

解决办法就是我们加一段代码,解决引用问题。

我们把引用改成下面这样

import org.springframework.web.client.RestTemplate;
    private static RestTemplate restTemplate;

然后,加入这样一段代码:

    public static RestTemplate getInstance(String charset) {
        RestTemplate restTemplate = new RestTemplate();
        restTemplate.getMessageConverters().add(new StringHttpMessageConverter(Charset.forName(charset)));
        return restTemplate;
    }

那么。我们一开始的代码调用就改成下面这样:

   HttpEntity<Object> requestEntity = new HttpEntity<>(map, requestHeaders);
            ResponseEntity result = getInstance("utf-8").exchange("https://xxxx/xxx/xx",
                    HttpMethod.POST, requestEntity, String.class);

这样执行后就不会报空指针了。