1

Java/Android でコーディングされ、Google Task API を使用してアプリを構築していますが、大きな問題に遭遇しました。

期日または完了日を入力しようとすると、Task API が「Bad Request」エラーを返します。ただし、期日または完了日を設定しようとしないと、タスクを正常に投稿できました。

この問題の調査に何時間も費やしましたが、解決策に最も近いのは次のスレッドです。

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

スレッドに記載されているように、日付とともにタスクのステータスを設定しようとしましたが、うまくいかないようです。

Googleドキュメント(com.google.api.client.util.DateTime)で指定されている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 値、整数 tzShift)。

代わりに以下を実行しただけで、うまくいきました。

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

3 に答える 3

2

日付を文字列として提供しようとするとどうなりますか?

開発者ドキュメントによると、これは有効なはずです。たとえば、これは提供されている例の 1 つです。

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 文字列に変換するときに、クライアント ライブラリにバグがある可能性があります。

于 2011-10-03T22:31:24.680 に答える
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());
于 2012-04-29T15:07:36.083 に答える
0

おそらくもう1つあります。スレッドを使用して update.execute() コーディングを実行すると、同じ結果になります。(不正なリクエスト / 400 / 無効な入力)

于 2013-02-15T07:53:15.153 に答える