我试图发送一个POST请求到REST服务使用REST模板,但得到下面的错误
RestClientException:无法写入请求:找不到适合请求类型[xxx.query.XBrainQueryRequest]和内容类型[application/json]的HttpMessageConverter。
XBrainQueryRequest request = new XBrainQueryRequest();
// set query ID
request.setQueryId(XBrainTradequeryId);
request.setFlags(new String[]{"ALL_FIELDS"});
ObjectMapper objectMapper = new ObjectMapper();
logger.info("calling XBrainTradeQuery and Input:{}",objectMapper.writeValueAsString(request));
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
try
{
restTemplate = new RestTemplate();
ResponseEntity<XBrainTradeList> result=null;
xBrainTradeList =null;
ResponseEntity<XBrainTradeList> result1 = restTemplate.exchange(XBrainTradeQueryURL, HttpMethod.POST, new HttpEntity(request, headers), XBrainTradeList.class);
我的XBrainQueryRequest课程如下
@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
public class XBrainQueryRequest {
private String queryId;
private String[] flags;
private String[] attributes;
/**
* @return the queryId
*/
public String getQueryId() {
return queryId;
}
public XBrainQueryRequest(String queryId, String[] flags, String[] attributes) {
super();
this.queryId = queryId;
this.flags = flags;
this.attributes = attributes;
}
public XBrainQueryRequest() {
}
public XBrainQueryRequest(String queryId, String[] flags) {
super();
this.queryId = queryId;
this.flags = flags;
}
/**
* @param queryId
* the queryId to set
*/
public void setQueryId(String queryId) {
this.queryId = queryId;
}
public String[] getFlags() {
return flags;
}
public void setFlags(String[] flags) {
this.flags = flags;
}
public String[] getAttributes() {
return attributes;
}
public void setAttributes(String[] attributes) {
this.attributes = attributes;
}
}
有人能解释我为什么会出错以及如何解决它吗?我对这些东西不熟悉。
检查SpringWeb依赖版本,我改为最新版本(5.3.5)并为我工作!
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.3.5</version>
</dependency>
断然的。将请求参数替换为objectMapper。writeValueAsString(请求)
。请求值存在JSON
格式问题。
旧代码
ResponseEntity<XBrainTradeList> result1 =
restTemplate.exchange(
XBrainTradeQueryURL,
HttpMethod.POST,
new HttpEntity(request, headers),
XBrainTradeList.class);
新代码
ResponseEntity<String> rest=
restTemplate.exchange(
XBrainTradeQueryURL,
HttpMethod.POST,
new HttpEntity(objectMapper.writeValueAsString(request), headers),
String.class);
我还以String
格式获取了响应。
我使用Maven Spring 4.1。0 Java 6,我想使用RestTemplate()。postForEntity(url、请求、响应类型) 当我执行这段代码时: 但是我有这个错误: 组织。springframework。http。转换器。HttpMessageGenetWritableException:无法写入请求:在org上找不到适用于请求类型[java.util.HashMap]的
我想实现使用Spring Cloud的客户端请求。我试过这个: 外国客户: 请求DTO: 控制器: 外型: 但是当我发出POST请求时,我得到了例外: 你知道我怎样才能解决这个问题吗?
我正在努力将带有JSON有效负载的POST请求发送到远程服务器。 此GET curl命令工作正常: 这个POST也很好: 所以我试着在我的Android应用程序中模仿它。 该应用程序在第一个GET请求上运行良好,但在第二个POST请求上发出400个错误请求。 下面是用于GET请求的代码: 以下是POST请求的源代码: 但它传达了这样一个信息: 这是Spring座控制器: 凭据资源类代码:
问题内容: 我正在编写一个使用RESTful服务的客户端。我需要以键,值对的形式发送请求,他们建议我为此使用Map。我正在调用的RESTful服务将仅接受JSON,而我的客户端将使用Java。实际上,它将成为现有企业EJB项目的一部分。 我已经编写了一个客户端,并且能够成功调用RESTful服务。实际上,如果我以String(JSON格式)发送请求,那么我什至会得到响应。但是我想避免将Map转换为
我正在编写一个客户端来使用RESTful服务。我被要求发送键,值对的请求,他们建议我为此使用地图。我调用的RESTful服务只接受JSON,我的客户端将Java。它实际上是现有企业EJB项目的一部分。 我已经编写了一个客户端,并且能够成功调用RESTful服务。事实上,如果我以字符串(JSON格式)发送请求,那么我甚至会得到一个响应。但我希望避免将映射转换为JSON格式字符串,然后在请求中发送出去
我想在spring boot和hibernate 5.2.6中使用sessionfactory,在尝试了一些解决方案后,我尝试使用LocalSessionFactoryBuilder,但是我遇到了这个异常。我的数据源被spring boot注入。我不知道为什么 我得到了这个例外