Google API for Google Docs,请求文档列表 - 400 Bad Request

San*_*ana 5 java android httpresponse google-docs google-api-java-client

从谷歌服务器验证谷歌文档后,我做了一个简单的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();
        }

  }
Run Code Online (Sandbox Code Playgroud)

sysout打印正确的URL作为

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

但是当我这样做时,我明白了

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)
Run Code Online (Sandbox Code Playgroud)

任何帮助将非常感激.我现在已经尝试了一个小时:-(

Ido*_*lon 2

在另一个线程中,用户@Merlin提供了解决类似问题的解决方案。他的解决方案是在请求中指定 API 版本号 3.0,如“ Google Documents List Data API ”文档中所述:

重要提示:如果您向使用仅在版本 3 中提供的功能的 API 发出请求,但忘记设置版本,您很可能会收到400 Bad Request 响应。由于版本 2 和版本 3 之间的 URL 结构不同,这是 API 新用户常犯的错误。

要指定版本号,请使用 GData-VersionHTTP 标头。该标头的值必须是3.0。需要小数点和零。

 GData-Version: 3.0

或者,您可以v=3在 URL 中指定为查询参数。当在剥离 HTTP 标头或某些 JavaScript 请求的防火墙后面工作时,通常需要这样做。建议尽可能使用 HTTP 标头。

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