2011-10-03 10 views
1

我建立一個應用程序用Java/Android的編碼,並使用谷歌API的任務,但我已經打了一個大問題。當我嘗試使用Google任務API在Java中發佈任務時,爲什麼我總是收到'錯誤請求'?

我嘗試輸入到期或完成日期的任務API返回一個「錯誤的請求」的錯誤。然而,當我沒有嘗試設置到期或完成日期時,我已成功發佈任務。

我花了幾個小時研究這個問題,我已經找到了一個解決方案最接近的是以下螺紋:

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

我試圖設置任務的狀態與日期一起作爲線程提到但這似乎不適用於我。

我假設我已經格式化的日期時間錯了,雖然我只是用一個DateTime作爲谷歌文檔(com.google.api.client.util.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"); 

如果有人能幫助我,我將不勝感激。

謝謝。


謝謝大家誰看。

多一點挖我找到了答案所以這裏後......

的谷歌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"); 

回答

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字符串時,在客戶端庫中的錯誤。

+0

它不允許您僅提供一個STRING類型的DATETIME。 –

+0

我有類似的問題。它給你的印象是想要DATETIME,但實際上,它需要一個字符串! –

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()); 
0

有一個更加可能。我使用一個線程來運行update.execute()編碼,並得到相同的結果。 (錯誤請求/ 400/Invaild輸入)

相關問題