当前位置: 首页 > 知识库问答 >
问题:

无法写入请求:没有找到适合请求类型的HttpMessageConzer

程禄
2023-03-14

我试图发送一个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;
    }

}

有人能解释我为什么会出错以及如何解决它吗?我对这些东西不熟悉。

共有2个答案

景星华
2023-03-14

检查SpringWeb依赖版本,我改为最新版本(5.3.5)并为我工作!

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>5.3.5</version>
    </dependency>
屠昌胤
2023-03-14

断然的。将请求参数替换为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注入。我不知道为什么 我得到了这个例外