我的目标是请求 GoogleTaskAPI 获取具有指定结果数的 TASKLIST。 如果我没有传递 requestBody,它工作得很好。但我需要将请求参数传递给要返回的特定数量的结果。当我这样做时,它会创建新的任务列表,而不是列表。那么如何做到这一点呢?
我的代码:
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);
最佳答案
maxResults
是查询参数,而不是请求参数,因此您可以将其放在 url 中:
String endPointUrl = "https://www.googleapis.com/tasks/v1/users/@me/lists?maxResults=3";
您还应该考虑使用 Java 客户端的任务接口(interface)来发出请求;它可能会更容易一些,因为它会为您处理 url 的详细信息:
http://code.google.com/p/google-api-java-client/wiki/APIs#Tasks_API
关于java - 带有正文内容的 Google API Java GET 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12471066/