我正在构建一个用Java / Android编写的应用程序并使用Google Task API,但我遇到了一个重大问题。
我尝试输入截止日期或完成日期,任务API返回“错误请求”错误。但是,当我不尝试设置截止日期或完成日期时,我已设法成功发布任务。
我花了几个小时研究这个问题,我找到的最接近解决方案的是以下主题:
我试图设置任务的状态以及线程中提到的日期,但这对我来说似乎不起作用。
我认为我已将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");
答案 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输入)