Похоже, у вас есть проблема, но вы не знаете, как подойти к ее отладке? Несколько вещей, чтобы посмотреть и попробовать:
Вопрос 1: проверка подписок
Объект, возвращенный из subscriptions.insert, должен указывать, что подписка успех. В зависимости от вашего языка исключение или ошибка будут указывать на проблему.
Вы также можете вызвать subscriptions.list, чтобы убедиться в наличии подписок. и установлены на значения, которые вы ожидаете. Если пользователь удалит авторизацию для вашего Glassware, этот список будет очищен.
Некоторые вещи, которые следует помнить об URL-адресе, используемом для подписки:
- Это должен быть URL-адрес HTTPS и не может использоваться самозаверяющий сертификат.
- Адрес должен быть разрешен из общедоступного Интернета. «localhost» и псевдонимы локальных имен не будут работать.
- Машина должна быть доступна из общедоступного Интернета. Машины с такими адресами, как «192.168.1.10», вероятно, будут недостаточно хороши.
Вопрос 2: печать при нажатии
Вам необходимо убедиться, что подписка настроена правильно и что у вас есть веб-приложение, прослушивающее указанный вами адрес, который будет обрабатывать операции POST по этому URL-адресу. Конечно, метод, вызываемый при переходе по этому URL-адресу, зависит от вас, поэтому вы можете добавить к нему ведение журнала. Здесь могут помочь языковые особенности.
Попробуйте протестировать его самостоятельно, перейдя по указанному URL-адресу в своем собственном браузере. Вы должны увидеть как минимум распечатанное сообщение журнала.
Если вы хотите, чтобы он печатался только для определенного пункта меню, вам нужно убедиться, что вы можете декодировать тело JSON, которое отправляется как часть POST, и отвечать на основе операции и идентификатора пункта меню.
Вы также должны убедиться, что возвращаете HTTP-код 200 как можно быстрее. Если вы этого не сделаете, серверы Google могут повторить попытку через некоторое время или в конечном итоге отказаться, если они никогда не получат ответа.
Обновление. Из примера кода, который вы разместили, я заметил, что вы либо регистрируетесь в INFO, либо отправляете на стандартный вывод, который должен регистрироваться в INFO (см. https://developers.google.com/appengine/docs/java/#Java_Logging). Вы получаете журнал из метода doGet()? Этот вопрос StackOverflow предполагает, что appengine не отображает элементы, зарегистрированные в INFO, если вы не измените файл logging.properties
.
Вопрос 3: был ли клик по нему?
В зависимости от конфигурации вашего веб-сервера и сервера приложений должны быть журналы о том, какие URL-адреса были поражены (как отметил @scarygami в комментариях к вашему вопросу).
Вы можете проверить это самостоятельно, чтобы убедиться, что вы можете попасть по URL-адресу, и он регистрируется. Однако имейте в виду упомянутые выше предупреждения о том, что делает URL-адрес допустимым для обратного вызова API-интерфейса зеркала.
Обновление. Из вашего комментария ниже следует, что вы наблюдаете, что URL-адрес, принадлежащий сервлету TimelineUpdateServlet, подвергается нажатию, но нет каких-либо доказательств что вызывается сообщение журнала в TimelineUpdateServlet.doPost(). Какой код возврата регистрируется? Пробовали ли вы вызывать этот URL-адрес вручную через POST, чтобы убедиться, что URL-адрес соответствует ожидаемому вами сервлету?
person
Prisoner
schedule
07.04.2014