gpt4 book ai didi

java - org.springframework.web.client.RestClientException : No HttpMessageConverter for java. util.HashMap 中出现错误

转载 作者:行者123 更新时间:2023-12-01 19:01:02 26 4
gpt4 key购买 nike

使用 Rest 模板时,我在 org.springframework.web.client.RestClientException 中收到以下错误:No HttpMessageConverter for java.util.HashMap。有人知道出了什么问题吗?

使用java 1.8、spring 5.2.2、commons-logging 1.2。

import java.util.HashMap;
import java.util.Map;

import org.springframework.web.client.RestTemplate;

public class testapi {
private static final String API_BASE_URL = "https://xyz/rest/ng";
private static RestTemplate template = new RestTemplate();

public static void main(String[] args)
throws Exception {
String token = login();
}

private static String login() {

Map<String, Object> payload = new HashMap<>();
payload.put("loginName", "abc.com");
payload.put("password", "xyz");
Map<String, Object> resp = template.postForObject(getUrl("/sessions"), payload, Map.class);
return (String) resp.get("token");

}
}

错误

Exception in thread "main" org.springframework.web.client.RestClientException: No HttpMessageConverter for java.util.HashMap
at org.springframework.web.client.RestTemplate$HttpEntityRequestCallback.doWithRequest(RestTemplate.java:964)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:740)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:677)
at org.springframework.web.client.RestTemplate.postForObject(RestTemplate.java:421)
at TestFormApis.login(testapis.java:117)
at TestFormApis.main(testapis.java:61)

最佳答案

您正在非 Spring 环境中使用 Spring 的 Web 客户端 RestTemplate(至少,您的示例演示了您以标准 Java 方式运行此测试)。

如果启动 Spring 应用程序,它会自行完成大部分配置,包括添加转换器(来自包 org.springframework.http.converter.* 的默认转换器:ByteArrayHttpMessageConverter、StringHttpMessageConverter、ResourceHttpMessageConverter、AllEncompassingHttpMessageConverter、 MappingJackson2XmlHttpMessageConverter、MappingJackson2HttpMessageConverter)。最后一个 - 对于您的情况,RestTemplate 使用内部 Jackson 进行转换。

因此,如果您想使用示例,只需添加特定的转换器即可。

更简单的方法 - 添加 Jackson 库并手动转换:

var mapper = ObjectMapper();
var strPayload = mapper.writeValueAsString(payload);

并在 RestTempate 调用中使用 strPayload

或者只是将您的应用程序作为 Spring 应用程序启动。

关于java - org.springframework.web.client.RestClientException : No HttpMessageConverter for java. util.HashMap 中出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59638449/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com