当我尝试使用Google Task API在Java中发布任务时,为什么我会继续收到“错误请求”?

时间:2011-10-03 22:20:42

标签: android google-tasks-api google-tasks

我正在构建一个用Java / Android编写的应用程序并使用Google Task API,但我遇到了一个重大问题。

我尝试输入截止日期或完成日期,任务API返回“错误请求”错误。但是,当我不尝试设置截止日期或完成日期时,我已设法成功发布任务。

我花了几个小时研究这个问题,我找到的最接近解决方案的是以下主题:

http://groups.google.com/group/google-tasks-api/browse_thread/thread/1753df5bbc8e3cb8/ab66b5e675f06e6a?lnk=gst&q=problem+changing#ab66b5e675f06e6a

我试图设置任务的状态以及线程中提到的日期,但这对我来说似乎不起作用。

我认为我已将DateTime格式化错误,但我只是使用Google文档(com.google.api.client.util.DateTime)中指定的DateTime。

这是我尝试使用的典型DateTime值的示例:

  

2011-10-03T22:28:626

我试过以下代码......

DateTime date = new DateTime(new Date());
Task task = new Task();
task.setTitle("Hello World");
task.setDue(date);
task.setStatus("needsAction");

和......

DateTime date = new DateTime(new Date());   
Task task = new Task();
task.setTitle("Hello World");
task.setCompleted(date);
task.setStatus("completed");

如果有人能帮助我,我将非常感激。

谢谢。


感谢所有观看过的人。

经过多一点挖掘后,我找到了答案,所以这里是......

Google Task API目前只接受DATETIME。

我提供的是DateTime,但格式不正确,我不得不添加时区转换整数。例如com.google.api.client.util.DateTime.DateTime(long value,Integer tzShift)。

我只是简单地执行了以下操作,但它确实有效。

DateTime date = new DateTime(System.currentTimeMillis(), 0);
Task task = new Task();
task.setTitle("Hello World");
task.setDue(date);
task.setStatus("needsAction");

3 个答案:

答案 0 :(得分:2)

如果您尝试将日期作为字符串提供,会发生什么?

根据开发人员文档,这应该是有效的。例如,这是提供的示例之一:

Task task = new Task();
task.title = "New Task";
task.notes = "Please complete me";
task.due = "2010-10-15T12:00:00.000Z";

Task result = service.tasks.insert("@default", task).execute();
System.out.println(result.title);

[来自:http://code.google.com/apis/tasks/v1/using.html#creating_task]

如果这样可行,则在将DateTime对象转换为JSON字符串时,客户端库中可能存在错误。

答案 1 :(得分:0)

使用:

DateTime date = new DateTime(System.currentTimeMillis(),0);
task.setDue(date);

or
new DateTime(new Date(value), TimeZone.getDefault());

不要使用:

DateTime date = new DateTime(System.currentTimeMillis());

答案 2 :(得分:0)

还有一个可能。我使用一个线程来运行update.execute()编码和case相同的结果。 (错误请求/ 400 / Invaild输入)