Google API для Документов Google, запрашивающих список документов – 400 Bad Request

После проверки подлинности с серверов google для документов Google я делаю простой getResponse, но получаю 400 Bad Request. Я не могу понять, где я ошибаюсь. Пример кода приведен ниже

private void executeRefreshAlbums() { HttpRequest request = transport.buildGetRequest(); request.url = GoogleDocsUrl.forDefaultPrivateFull(); System.out.println("URL = "+request.url); try { HttpResponse response = request.execute(); System.out.println("Response = "+response.getContent()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } 

Sysout печатает правильный URL-адрес, как

 03-12 17:36:59.573: INFO/System.out(451): URL = https://docs.google.com/feeds/default/private/full 

Но когда я это делаю, я получаю

 03-12 17:43:41.360: WARN/System.err(3958): com.google.api.client.http.HttpResponseException: 400 Bad Request 03-12 17:43:41.415: WARN/System.err(3958): at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:209) 03-12 17:43:41.415: WARN/System.err(3958): at com.example.Test.executeRefreshAlbums(Test.java:198) 03-12 17:43:41.415: WARN/System.err(3958): at com.example.Test.authenticated(Test.java:190) 03-12 17:43:41.415: WARN/System.err(3958): at com.example.Test.authenticatedClientLogin(Test.java:156) 03-12 17:43:41.415: WARN/System.err(3958): at com.example.Test.access$1(Test.java:153) 03-12 17:43:41.415: WARN/System.err(3958): at com.example.Test$2$1.run(Test.java:139) 03-12 17:43:41.415: WARN/System.err(3958): at android.os.Handler.handleCallback(Handler.java:587) 03-12 17:43:41.415: WARN/System.err(3958): at android.os.Handler.dispatchMessage(Handler.java:92) 03-12 17:43:41.415: WARN/System.err(3958): at android.os.Looper.loop(Looper.java:123) 03-12 17:43:41.415: WARN/System.err(3958): at android.app.ActivityThread.main(ActivityThread.java:4363) 03-12 17:43:41.415: WARN/System.err(3958): at java.lang.reflect.Method.invokeNative(Native Method) 03-12 17:43:41.415: WARN/System.err(3958): at java.lang.reflect.Method.invoke(Method.java:521) 03-12 17:43:41.422: WARN/System.err(3958): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 03-12 17:43:41.422: WARN/System.err(3958): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 03-12 17:43:41.422: WARN/System.err(3958): at dalvik.system.NativeStart.main(Native Method) 

Любая помощь могла бы быть полезна. Я пробовал это в течение часа сейчас 🙁

В другом потоке пользователь @Merlin предоставил решение, которое разрешило аналогичную проблему. Его решение состояло в том, чтобы указать версию API версии 3.0 в запросе, как указано в документе API данных списка документов Google :

Важно : если вы сделаете запрос к API, который использует функцию, доступную только в версии 3, но забудьте установить версию, вы, скорее всего, получите ответ 400 Bad Request . Поскольку структура URL отличается между версиями 2 и 3, это распространенная ошибка, допущенная новыми пользователями API.

Чтобы указать номер версии, используйте HTTP-заголовок GData-Version . Значение этого заголовка должно быть 3.0 . Требуются десятичные и нулевые значения.

GData-Version: 3.0

В качестве альтернативы вы можете указать v=3 в качестве параметра запроса в URL-адресе. Это часто необходимо при работе за брандмауэром, который разделяет заголовки HTTP или некоторые запросы JavaScript. Рекомендуется использовать заголовок HTTP, когда это возможно.

https://docs.google.com/feeds/default/private/full?v=3

Не знаете, какой transport объект вам нужен;

Вот простой запрос HttpGet:

  HttpGet getMethod = new HttpGet(URI); HttpParams params = new BasicHttpParams(); HttpConnectionParams.setConnectionTimeout(params, 30000); HttpConnectionParams.setSoTimeout(params, 30000); DefaultHttpClient httpClient = new DefaultHttpClient(params); HttpResponse response = httpClient.execute(getMethod); BufferedReader in = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8")); String returnString = ""; String line = ""; do { returnString += line; line = in.readLine(); } while (line != null); 

Возможно, используя этот метод, вы получите более очевидную ошибку?

Intereting Posts
Сертификат списка, хранящийся в учетных данных пользователя Как GCM находит пользовательский телефон Как отсортировать recylerview по наименьшему числу / String android studio Google Analytics – отслеживание неизвестно Android Studio – Gradle 1.5 – опция -core-library Изображение в верхней части карты Настроить изображение, указанное из строки Html Использование табулятора / tabspace в TextView Блокировать устройство Android Изменение размера поверхности для изменения соотношения сторон в видеоизображении в андроиде Установить выбранный по умолчанию элемент диалогового окна оповещений ListView в Android Анимация фрагментации: слайд и слайд Получить доступ к приложению laravel из приложения Android с помощью токена csrf Ссылка на запись в LinkedHashMap не сохраняется в потоке (Android) Включение независимых сторонних разработчиков для локализации приложений Android; Данные локализации вне APK приложения