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



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

Feign客户端:

@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配置:

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]

你知道我该怎么解决这个问题吗?

在我的案例中,我使用的是不带spring-boot-starter-webopenfeign依赖项。添加此依赖项后,错误将消失。可能是因为它包含了所需的json映射程序。

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

public class RegisterUserDTO {

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

}

请参阅我添加的代码。

最新更新