Я использую Spring Boot для написания приложения, которое взаимодействует с HTTP-серверами отдыха. Один из серверов, к которым я подключаюсь (Wit.ai), использует токен авторизации beaerer. Запрос curl, который дает успешный ответ, выглядит следующим образом:
GET /message?q=sample message HTTP/1.1
Host: api.wit.ai
Authorization: Bearer XXXXXXXXXXXXX
Cache-Control: no-cache
Postman-Token: 526c3a11-8e61-4552-aa19-e913f6473753
Документы wit.ai говорят о токене следующее:
Wit.ai использует OAuth2 в качестве слоя авторизации. Таким образом, каждый запрос API должен содержать HTTP-заголовок Authorize с токеном.
Токены доступа зависят от приложения.
Я пытаюсь отправить запрос GET на эту конечную точку в приложении Spring Boot, используя @FeignClient. Однако мне кажется, что конечная точка не принимает мой токен авторизации.
Вот мой код FeignClient
@FeignClient(name="witGetter", url = "${wit.url}")
public interface WitGetter {
@RequestMapping(method = RequestMethod.GET, value = "/message?v=20180507q={text}",
headers = {"Authorization: Bearer XXXXXXXXXXXXX"})
WitResponse getWitResponse(@PathVariable("text") final String text);
}
Как правильно передать такой токен авторизации? Я пробовал несколько других вещей, но безрезультатно. Спасибо за любой совет !!!
Кстати, следующий код работает с использованием традиционного интерфейса Feign, но мне нужно использовать @FeignClient в этом случае.
public interface WitGetter {
@Headers("Authorization: Bearer XXXXXXXXXXXXX")
@RequestLine("GET /message?q={text}")
WitResponse getWitResponse(@Param("text") String text);
}
(код ниже находится в отдельном конфигурационном файле)
@Bean
public WitGetter defaultWitGetter(@Value("https://api.wit.ai") final String witUrl){
return Feign.builder().decoder(new GsonDecoder()).target(WitGetter.class, witUrl);
} * * тысяча двадцать-один
EDIT
Код ошибки, который я получаю при использовании вышеуказанного кода:
Исключение в потоке "main" feign.FeignException: статус 400, читающий WitGetter # getWitResponse (String, String); содержание:
{
«ошибка»: «Неверный аутентификация, проверка токена / параметров»,
"код": "нет аутентификации"
}