2016-05-31 1 views
1

У меня есть служба Java BE, которая является RESTFul, которая портируется в WSO2 API Manager. Он опубликован и доступен в магазине. Я зарегистрировал новое приложение (по имени «Java-приложение»), и, подписавшись на этот API, он предоставил мне клиентский ключ и клиентскую тайну вместе с токеном. Используя токен, я могу успешно получить доступ к API (из интерфейса SOAP). Мое требование - получить доступ к API из автономного приложения Java. Может ли кто-нибудь направить меня или предоставить соответствующий код, который может получить доступ к опубликованному API.JavaCode для подключения API Mgr с использованием идентификатора клиента/секретности клиента/токена

С уважением, Sreedhar.

ответ

0

Вы можете использовать Apache HTTP client для вызова API, отправив Authorization в качестве заголовка HTTP.

String url = "API_URL"; 

HttpClient client = HttpClientBuilder.create().build(); 
HttpGet request = new HttpGet(url); 

// add Authorization Header header 
request.addHeader("Authorization", "Bearer :" + accessToken); 
HttpResponse response = client.execute(request); 

System.out.println("Response Code : " 
      + response.getStatusLine().getStatusCode()); 

BufferedReader rd = new BufferedReader(
    new InputStreamReader(response.getEntity().getContent())); 

StringBuffer result = new StringBuffer(); 
String line = ""; 
while ((line = rd.readLine()) != null) { 
    result.append(line); 
} 

для генерации токена с Пользовательским Client Key/Secret, Вы можете использовать следующий Curl образец для создания запроса HTTP. Более подробную информацию можно найти в token api

curl -k -d "grant_type=password&username=<username>&password=<password>" -H "Authorization: Basic SVpzSWk2SERiQjVlOFZLZFpBblVpX2ZaM2Y4YTpHbTBiSjZvV1Y4ZkM1T1FMTGxDNmpzbEFDVzhh" -H "Content-Type: application/x-www-form-urlencoded" https://localhost:8243/token 

Вы должны базировать 64 закодировать Client Key/Secret и отправить его с Authorization заголовок как Basic.

+0

Привет, Abhiram, Спасибо, что поделились фрагментом кода. Я использовал код, однако столкнулся с некоторыми проблемами SSL, которые были решены. Однако при доступе к коду я получаю код 401 (неавторизованный). На консоли API Manager заполняются два журнала. 1. [2016-06-01 11: 20: 22,918] INFO - APIKeyValidator Недопустимый токен OAuth: токен доступа: истек. 2. [2016-06-01 11: 20: 22,924] WARN - Ошибка аутентификации API APIAuthenticationHandler из-за недопустимых учетных данных. Обратите внимание, что я успешно удаляюсь из пользовательского интерфейса SOAP, используя тот же токен также из консоли API. – sreedhar

+0

Далее я ищу код, который использует клиентский ключ/секрет, чтобы получить свежий токен, а затем использовать его в доступе. Было бы очень полезно, если бы вы отправили такой код тоже. – sreedhar

+0

Это сказано в журнале, «Токен доступа: истек», сгенерируйте новый токен и попробуйте. Существует два URL-адреса шлюза: один через HTTPS, другой - через HTTP, вам нужно использовать HTTP, иначе вам нужно настроить keystore/truststore на своей стороне клиента. –