2017-10-19 7 views
1

Le serveur obtient le corps de la demande en utilisant request.getInputStream().Comment envoyer une chaîne avec FeignClient

Le code client:

@FeignClient(name="composer-agent") 
public interface ComposerClient { 
    @RequestMapping(value = "/agent/import_bp", method = RequestMethod.POST) 
    String importBlueprints(String payload); 
} 

mais je reçois une exception:

Caused by: feign.FeignException: status 500 reading ComposerClient#importBlueprints(String); content: 
{"timestamp":"2017-10-19T06:15:47-0400","status":500,"error":"Internal Server Error","exception":"java.lang.IllegalArgumentException","message":"MIME type may not contain reserved characters"} 
    at feign.FeignException.errorStatus(FeignException.java:62) 
    at feign.codec.ErrorDecoder$Default.decode(ErrorDecoder.java:91) 
    at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:138) 
    at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:76) 
    at feign.hystrix.HystrixInvocationHandler$1.run(HystrixInvocationHandler.java:108) 
    at com.netflix.hystrix.HystrixCommand$2.call(HystrixCommand.java:301) 
    at com.netflix.hystrix.HystrixCommand$2.call(HystrixCommand.java:297) 
    at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:46) 
    ... 144 common frames omitted 

je aussi essayer de mettre consumes = MediaType.APPLICATION_JSON_VALUE ou d'autres valeurs, ou ajouter @RequestBody, mais je reçois la même exception.

Alors, comment puis-je gérer ce problème? Merci.

+0

' "statut": 500, "erreur": "Internal Server Error", "exception": "java.lang.IllegalArgumentException", "message":" type MIME ne peut pas contenir des caractères réservés "'. Votre type mime semble contenir des caractères illégaux. Donc la question est: Quel type de mime utilisez-vous (ce n'est pas montré dans le code)? –

Répondre

0

Il s'agit d'un known bug dans Feign 9.3.0 lorsque le client HTTP sous-jacent est le client HTTP Apache. La solution consiste à mettre à niveau la dépendance feign-httpclient. Par exemple:

compile "io.github.openfeign:feign-httpclient:9.5.0" 
+0

J'utilise un ressort nuage, et la dépendance est la suivante: \t org.springframework.cloud \t ressort nuage-démarreur-feindre cheney

+0

i créer le client avec une interface. Toute suggestion? – cheney

+0

Ajoutez la dépendance que j'ai documentée avec une version qui correspond à celle qui est apportée par le démarreur de cloud. Si la version apportée par le démarreur de cloud a le bug, mettez à jour votre version de spring-cloud. Maven a une cible qui montre toutes les versions de dépendance pour vous aider. –