#google-app-engine #rest #servlets #parse-platform #httpurlconnection
#google-app-engine #rest #сервлеты #синтаксический анализ-платформа #httpurlconnection
Вопрос:
Я создал базу данных в Parse.com облако. Теперь мне нужно написать сервлет в моем приложении Google App Engine, чтобы вызывать службы REST при разборе. Службы REST требуют аутентификации пользователя, которая заключается в идентификаторе приложения Parse и ключе Javascript.
...
URL url = new URL("https://api.parse.com/1/classes/OBJECT");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestProperty("Content-Type", "application/json");
Base64 enc = new Base64();
String userpassword = "{PARSE_APP_ID}" ":" "javascript-key={PARSE_JS_KEY}";
String encodedAuthorization = enc.encodeBase64String(userpassword.getBytes());
connection.setRequestProperty("Authorization", "Basic " encodedAuthorization);
connection.setRequestMethod("GET");
...
Я использую org.apache.commons.codec.binary.Base64 для кодирования, чтобы аутентифицировать вызов REST.
The Parse.com REST API рекомендует использовать следующий формат запроса для выполнения HTTP-вызова:
https://myAppID:javascript-key=myJavaScriptKey@api.parse.com/1/classes/GameScore/Ed1nuqPvcm
Проблема в том, что я продолжал получать
{«ошибка»: «неавторизованный»}
Есть ли у кого-нибудь опыт работы с вызовом аутентифицированной службы REST? Спасибо!
Редактировать.
URL url = new URL("https://api.parse.com/1/classes/OBJECT");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("X-Parse-Application-Id", "{APP_ID}");
connection.setRequestProperty("X-Parse-REST-API-Key", "REST_ID");
connection.setRequestProperty("Content-Type", "application/json");
Я все еще получал ту же ошибку, хотя responseCode был «200».
Приветствия,
Ответ №1:
Вместо этого используйте версию аутентификации в заголовке:
connection.setRequestProperty("X-Parse-Application-Id", "app id here");
connection.setRequestProperty("X-Parse-REST-API-Key", "rest key here");
Комментарии:
1. Спасибо за ответ. Но я все еще получаю ту же ошибку после внесения изменений.
2. вы уверены, что используете правильный идентификатор приложения и ключ rest? несанкционированное сообщение говорит об обратном.
3. evernote.com/shard/s53/sh/0b483880-ef94-4918-8e18-2056263b0bc1/…
4. Да, я уверен, что идентификатор приложения и ключ REST API указаны правильно. Я нахожусь за корпоративным прокси. Но это не должно иметь значения, поскольку я могу получить ответ от Parse.com так ли это?
5. Да, я могу получить правильный результат из запроса CURL из сети. Это дало мне результат в формате JSON.