【发布时间】:2020-10-09 05:42:23
【问题描述】:
我有一个用 Java 编写的 Spring Boot REST API。我正在使用 Feign 客户端连接到另一个 REST API。端点用于标头参数、apikey 和 serviceName。 当端点调用 feign 客户端时出现此错误。
feign.FeignException: status 401 reading FacilityViewClient#getFacilities(Map,String,String)\r\n\tat feign.FeignException.errorStatus(FeignException.java:78)
这就是我使用头参数实现 feign 客户端的方式:
@GetMapping(path = "/schedule-svc/api/v1/facilities")
FacilitiesViewResponse getFacilities(@RequestHeader Map headers,
@RequestParam("facilityType") String facilityType,
@RequestParam("stateProvinceCode") String stateProvinceCode);
这是使用 feign 客户端的调用:
Map<String, Object> headerMap = new HashMap<>();
headerMap.put("apikey", "xxxxxxx" );
headerMap.put("SERVICE-NAME", "Location");
FacilitiesViewResponse facilitiesViewResponse = facilityViewClient.getFacilities( headerMap,"RALYD", "PA");
我也尝试使用单独的@RequestHeader 字符串参数并得到相同的错误。像这样:
@RequestHeader("apikey") String apiKey
@RequestHeader("SERVICE-NAME") String serviceName
发生同样的错误。
我可以使用 Postman 访问该服务,并且标头信息如下所示:
是否需要在feign客户端中定义其他属性才能成功设置header参数
【问题讨论】:
标签: java rest spring-cloud-feign