Почему я продолжаю получать «Плохой запрос», когда пытаюсь опубликовать задачу в Java с помощью Google Task API? - PullRequest
1 голос
/ 04 октября 2011

Я создаю приложение, написанное на Java / Android, и использую Google Task API, но у меня возникла серьезная проблема.

Я пытаюсь ввести дату завершения или завершения, когда Task API возвращает 'BadЗапрос 'ошибка.Тем не менее, мне удалось успешно опубликовать задачи, когда я не пытался установить дату завершения или завершения.

Я потратил часы на исследование этой проблемы, наиболее близким к решению, которое я нашел, является следующая тема:

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

Я пытался установить статус задачи вместе с датой, упомянутой в теме, но, похоже, это не работает для меня.

Я предполагаю, что янеправильно отформатировал DateTime, хотя я просто использую DateTime, как указано в документации Google (com.google.api.client.util.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В настоящее время API принимает только DATETIME.

Я предоставлял DateTime, но формат был неправильным, мне пришлось добавить целое число сдвига часового пояса.например, com.google.api.client.util.DateTime.DateTime (длинное значение, целое число tzShift).

Я просто сделал ниже, и это сработало.

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

Ответы [ 3 ]

2 голосов
/ 04 октября 2011

Что произойдет, если вы попытаетесь указать дату в виде строки?

Согласно документации разработчика, это должно быть действительно. Например, это один из приведенных примеров:

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 голосов
/ 15 февраля 2013

Возможно еще одно. Я использую поток для запуска кодирования update.execute () и делаю то же самое. (Неверный запрос / 400 / Неудачный ввод)

0 голосов
/ 29 апреля 2012

Использование:

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

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

Не использовать:

DateTime date = new DateTime(System.currentTimeMillis());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...