带有正文内容的Google API Java GET请求

时间:2012-09-18 05:47:11

标签: java google-api google-tasks-api

我的目标是使用指定的no.of结果请求TASKLIST的GoogleTaskAPI。 它工作正常,如果我没有通过 requestBody 。但我需要将请求参数传递给要返回的特定数量的结果。当我这样做时,它会创建新的Tasklist,而不是列出。那怎么做呢?

我的代码:

    GoogleAccessProtectedResource access = new GoogleAccessProtectedResource(accessToken, httpTransport, jsonFactory, clientId, clientSecret, refreshToken);
    HttpRequestFactory rf = httpTransport.createRequestFactory(access);

    String endPointUrl = "https://www.googleapis.com/tasks/v1/users/@me/lists";
    String requestBody = "{\"maxResults\":3}";

    GenericUrl endPoint = new GenericUrl(endPointUrl);
    ByteArrayContent content = new ByteArrayContent("application/json", requestBody.getBytes());

    //Try 0: Works, But Retrieving all of my Tasklist, I need only 3
    //HttpRequest request = rf.buildGetRequest(endPoint);
    //-------

    //Try 1: Fails to retrieve
    //HttpRequest request = rf.buildGetRequest(endPoint);
    //request.setContent(content);
    //request.getContent().writeTo(System.out);
    //-------

    //Try 2: Fails to retrieve
    HttpRequest request = rf.buildRequest(HttpMethod.GET, endPoint, content);
    request.getContent().writeTo(System.out);
    //-------

    HttpResponse response = request.execute();
    String str = response.parseAsString();
    utils.log(str);  

1 个答案:

答案 0 :(得分:1)

maxResults是一个查询参数,而不是请求参数,因此您只需将其放入网址:

String endPointUrl = "https://www.googleapis.com/tasks/v1/users/@me/lists?maxResults=3";

您还应该考虑使用Java客户端的Tasks接口来发出请求;它可能会更容易一些,因为它会为您处理网址的详细信息:

http://code.google.com/p/google-api-java-client/wiki/APIs#Tasks_API