【问题标题】:Google API for Google Docs, requesting a list of documents -- 400 Bad RequestGoogle API for Google Docs,请求文档列表——400 Bad Request
【发布时间】:2011-03-12 23:44:43
【问题描述】:

从谷歌服务器对谷歌文档进行身份验证后,我做了一个简单的 getResponse,但我收到了 400 错误请求。我不明白我哪里错了。示例代码如下

  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)

任何帮助将不胜感激。我已经尝试了一个小时了:-(

【问题讨论】:

标签: java android google-docs httpresponse google-api-java-client


【解决方案1】:

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

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

要指定版本号,请使用 GData-Version HTTP 标头。此标头的值必须是 3.0。这 十进制和零是必需的。

 GData-Version: 3.0

或者, 您可以在 URL 中指定 v=3 作为查询参数。这往往是 在去除 HTTP 标头的防火墙后工作时需要,或 来自一些 JavaScript 请求。建议使用 HTTP 标头 若有可能。

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

【讨论】:

    【解决方案2】:

    不确定您使用的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); 
    

    也许改用这种方法会得到更明显的错误?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-27
      • 1970-01-01
      • 2014-07-07
      • 2013-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-29
      相关资源
      最近更新 更多