Важно FormHttpMessageConverter только для сериализации подкласса MultiValueMap
ой интерфейс Feign
@FeignClient(
name="mpi",
url="${mpi.url}",
configuration = FeignSimpleEncoderConfig.class
)
public interface MpiClient {
@RequestMapping(method = RequestMethod.POST)
public ResponseEntity<String> getPAReq(@QueryMap Map<String, String> queryMap
);
}
и моя настраиваемая конфигурация
public class FeignSimpleEncoderConfig {
public static final int FIVE_SECONDS = 5000;
@Bean
public Logger.Level feignLogger() {
return Logger.Level.FULL;
}
@Bean
public Request.Options options() {
return new Request.Options(FIVE_SECONDS, FIVE_SECONDS);
}
@Bean
@Scope("prototype")
public Feign.Builder feignBuilder() {
return Feign.builder()
.encoder(new FormEncoder());
}
}
Если я отправляю запрос таким образом, я вижу, что мой запрос отправляет Content-Type: application / json; charset = UTF-8. Но если я установлю тип контента
consumes = "application/x-www-form-urlencoded"
У меня есть это сообщение об ошибке
feign.codec.EncodeException: Could not write request: no suitable HttpMessageConverter found for request type [java.util.HashMap] and content type [application/x-www-form-urlencoded]
at org.springframework.cloud.netflix.feign.support.SpringEncoder.encode(SpringEncoder.java:108) ~[spring-cloud-netflix-core-1.1.7.RELEASE.jar:1.1.7.RELEASE]
Как отправить POST-запрос, я думаю, что я должен сделать что-то еще с Encoder. Спасибо за вашу помощь.