2016-08-12 2 views
3

Je vérifie actuellement comment utiliser Feign en tant que client REST déclaratif dans un de mes projets.spring boot feign client obtenir HTTP 404

suivant est Feindre client

@FeignClient(name = "SEARCHCABMS",configuration = AppFeignConfiguration.class) 
     public interface SearchCabMsClient { 

     @RequestMapping(value = "api/searchcab/locationcabtimedetail/search/getCabForLocationAfterTimeSlot", method = RequestMethod.GET) 
     String searchCabDetails(@PathVariable("fromDate") String fromDate, 
           @PathVariable("locationId") long locationId, 
           @PathVariable("isdeleted") byte isdeleted, 
           @PathVariable("hourforbooking")int hourforbooking); 
    } 

Cette interface est autowired en un seul service

@Autowired 
SearchCabMsClient restService; 

Ajouté EnableFeignClients à SpringBootApplication

@EnableFeignClients(basePackages = {"com.gp.cabbooking.services.feign"}) 

dépendances, etc parent dans pom.xml

<parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.3.5.RELEASE</version> 
</parent> 

dépendance

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-web</artifactId> 
</dependency> 

<dependency> 
    <groupId>org.springframework.cloud</groupId> 
    <artifactId>spring-cloud-starter-eureka</artifactId> 
</dependency> 

<dependency> 
    <groupId>org.springframework.cloud</groupId> 
    <artifactId>spring-cloud-starter-ribbon</artifactId> 
</dependency> 

<dependency> 
    <groupId>org.springframework.cloud</groupId> 
    <artifactId>spring-cloud-starter-feign</artifactId> 
</dependency> 

Je peux en mesure de voir lors du débogage de printemps créer proxy pour mon client feindre j'ai essayé d'appeler ce service avec l'aide de ruban et il fonctionne très bien mais quand je méthode Execute définir dans mon feignant client. Je reçois feign.FeignException: état 404 lecture

feign.FeignException: status 404 reading SearchCabMsClient#searchCabDetails(String,long,byte,int) 
    at feign.FeignException.errorStatus(FeignException.java:62) ~[feign-core-8.16.2.jar:8.16.2] 
    at feign.codec.ErrorDecoder$Default.decode(ErrorDecoder.java:91) ~[feign-core-8.16.2.jar:8.16.2] 
    at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:134) ~[feign-core-8.16.2.jar:8.16.2] 
    at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:76) ~[feign-core-8.16.2.jar:8.16.2] 
    at feign.hystrix.HystrixInvocationHandler$1.run(HystrixInvocationHandler.java:97) ~[feign-hystrix-8.16.2.jar:8.16.2] 
    at com.netflix.hystrix.HystrixCommand$1.call(HystrixCommand.java:293) ~[hystrix-core-1.5.3.jar:1.5.3] 
    at com.netflix.hystrix.HystrixCommand$1.call(HystrixCommand.java:289) ~[hystrix-core-1.5.3.jar:1.5.3] 
    at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:46) ~[rxjava-1.1.5.jar:1.1.5] 
    at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:35) ~[rxjava-1.1.5.jar:1.1.5] 
    at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50) ~[rxjava-1.1.5.jar:1.1.5] 
    at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) ~[rxjava-1.1.5.jar:1.1.5] 
    at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50) ~[rxjava-1.1.5.jar:1.1.5] 
    at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) ~[rxjava-1.1.5.jar:1.1.5] 
    at rx.Observable.unsafeSubscribe(Observable.java:8460) ~[rxjava-1.1.5.jar:1.1.5] 
    at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:51) ~[rxjava-1.1.5.jar:1.1.5] 
    at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:35) ~[rxjava-1.1.5.jar:1.1.5] 
    at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50) ~[rxjava-1.1.5.jar:1.1.5] 

Répondre

0

Avez-vous défini l'URL du service que vous atteignez à l'aide de ce client feindre? 404 est un problème non trouvé. Avoir un support de référence dans url aide à l'externaliser et à configurer pour chaque environnement.

Si vous avez configuré l'URL, doublez la vérification du point de terminaison de repos.