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

无法写入请求:找不到适用于请求类型为false的HttpMessageConverter

江宏伟
2023-03-14

我想实现使用Spring Cloud的客户端请求。我试过这个:

外国客户:

@FeignClient(name = "mail-service", url = "mail-service")
public interface EmailClient {

    @RequestMapping(method = RequestMethod.POST, value = "/register")
    void setUserRegistration(RegisterUserDTO registerUserDTO);

    @RequestMapping(method = RequestMethod.POST, value = "/password_reset")
    void setUserPasswordReset(PasswordResetDTO passwordResetDTO);
}

请求DTO:

public class RegisterUserDTO {
    private int id;

    public RegisterUserDTO() {
    }
}

控制器:

@Autowire
EmailClient emailClient;

@PostMapping("/dummy")
public ResponseEntity<?> test() {

    RegisterUserDTO obj = new RegisterUserDTO();

    emailClient.setUserRegistration(obj);

    return ok().build();
}

外型:

feign:
    client:
        config:
            default:
                connectTimeout: 5000
                readTimeout: 5000
                loggerLevel: basic
eureka:
    client:
        serviceUrl:
            defaultZone: ${EUREKA_URI:http://localhost:8761/eureka}
    instance:
        preferIpAddress: true

但是当我发出POST请求时,我得到了例外:

22:50:05.325 [http-nio-8090-exec-1] DEBUG DispatcherServlet[logResult:1101] - Failed to complete request: feign.codec.EncodeException: Could not write request: no suitable HttpMessageConverter found for request type [org.engine.plugin.dto.RegisterUserDTO]
22:50:05.328 [http-nio-8090-exec-1] DEBUG HstsHeaderWriter[writeHeaders:169] - Not injecting HSTS header since it did not match the requestMatcher org.springframework.security.web.header.writers.HstsHeaderWriter$SecureRequestMatcher@461d6969
22:50:05.329 [http-nio-8090-exec-1] DEBUG SecurityContextPersistenceFilter[doFilter:119] - SecurityContextHolder now cleared, as request processing completed
22:50:05.334 [http-nio-8090-exec-1] ERROR [dispatcherServlet][log:175] - Servlet.service() for servlet [dispatcherServlet] in context with path [/engine] threw exception [Request processing failed; nested exception is feign.codec.EncodeException: Could not write request: no suitable HttpMessageConverter found for request type [org.engine.plugin.dto.RegisterUserDTO]] with root cause
feign.codec.EncodeException: Could not write request: no suitable HttpMessageConverter found for request type [org.engine.plugin.dto.RegisterUserDTO]

你知道我怎样才能解决这个问题吗?

共有2个答案

柯浩壤
2023-03-14

是的,您没有在DTO中添加getter方法。

public class RegisterUserDTO {
    

    private int id;
    public RegisterUserDTO() {
    }
    public int getId() {
     return id;
    }


}

请参阅我添加的代码

庞鸿骞
2023-03-14

在我的例子中,我使用的是openfeign依赖关系,而没有sping-boo-starter-web。添加此依赖项后,错误将消失。可能是因为它包含了所需的json映射器。

 类似资料:
  • 我试图发送一个POST请求到REST服务使用REST模板,但得到下面的错误 RestClientException:无法写入请求:找不到适合请求类型[xxx.query.XBrainQueryRequest]和内容类型[application/json]的HttpMessageConverter。 我的XBrainQueryRequest课程如下 有人能解释我为什么会出错以及如何解决它吗?我对这些

  • 我正在努力将带有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格式字符串,然后在请求中发送出去

  • 我使用Maven Spring 4.1。0 Java 6,我想使用RestTemplate()。postForEntity(url、请求、响应类型) 当我执行这段代码时: 但是我有这个错误: 组织。springframework。http。转换器。HttpMessageGenetWritableException:无法写入请求:在org上找不到适用于请求类型[java.util.HashMap]的

  • 问题内容: 我从html中接收来自用户的一堆输入,然后将其传递给ajax查询以获取响应。 这是满足上述要求的Flask代码。 上面的方法无法通过get找到到“报告”的路线。但是,它可以在POST请求中找到它。 这是我得到的日志 错误的请求..我在这里做错了什么? 问题答案: GET请求没有 (*),并且不是JSON编码的,而是URL编码的(普通,常规键值对)。 这意味着您可以简单地使用jQuery