【发布时间】:2021-07-26 07:51:44
【问题描述】:
我想使用 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]
你知道我该如何解决这个问题吗?
【问题讨论】:
-
尝试将 getter 和 setter 添加到您的 POJO RegisterUserDTO。
-
我添加了 getter/setter 但我仍然得到同样的错误。
-
这就是问题所在。谢谢!
标签: spring spring-boot spring-cloud spring-cloud-feign feign