Вызовите Parse.com Службы REST из Google App Engine

#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.