Solución:
En primer lugar, debe cambiar su interfaz de Feign de esta manera:
@FeignClient (
configuration = FeignSimpleEncoderConfig.class
)
public interface MpiClient {
@RequestMapping(method = RequestMethod.POST)
ResponseEntity<String> getPAReq(Map<String, ?> queryMap);
}
Luego, debe configurar el codificador durante la configuración fingida:
public class FeignSimpleEncoderConfig {
@Bean
public Encoder encoder() {
return new FormEncoder();
}
}
Me parece que Map no es válido para el cuerpo del formulario. MultiValueMap funciona bien.
Cliente fingido:
@FeignClient(name = "name", url="url", configuration = FromUrlEncodedClientConfiguration.class)
public interface PayPalFeignClient {
@RequestMapping(value = "https://foroayuda.es/", method = POST, consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
@Headers("Content-Type: application/x-www-form-urlencoded")
String foo(MultiValueMap<String, ?> formParams);
}
Config:
@Configuration
public class FromUrlEncodedClientConfiguration {
@Autowired
private ObjectFactory<HttpMessageConverters> messageConverters;
@Bean
@Primary
@Scope(SCOPE_PROTOTYPE)
Encoder feignFormEncoder() {
return new FormEncoder(new SpringEncoder(this.messageConverters));
}
}
Dependencias de Gradle:
compile group: 'io.github.openfeign.form', name: 'feign-form', version: '2.0.2'
compile group: 'io.github.openfeign.form', name: 'feign-form-spring', version: '2.0.5'
Después de eso, todo lo que tiene que hacer es llamarlo con un parámetro MultivalueMap.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)