2016-05-14 4 views
0

Привет, мое приложение GWT отлично работает в браузере ПК, но связь RPC случайным образом происходит в браузерах для мобильных устройств/iPad. Кажется, это первый успех связи RPC в мобильном/iPad, но последующие вызовы RPC терпят неудачу. Когда я проверил журналы сервера, никаких исключений. Я использую Tomcat в качестве сервера и Apache HTTPD для статического ресурса сервера. Еще одно замечание - когда несколько изображений загружаются, RPC-вызовы терпят неудачу в моем iPad.GWT RPC случайным образом не работает в мобильном браузере IE без каких-либо исключений в журнале сервера, но работает на ПК

Пожалуйста, помогите мне в этом.

ответ

0

Вы не предоставили много информации, но это «работает впервые, а затем не работает» звучит как поведение кэша, введенное в iOS6, IIRC.

Чтобы узнать:

  1. Запустите приложение в нерабочем состоянии.
  2. очистить кеш в настройках браузера (через системные настройки в iOS)
  3. Повторите вызов RPC.

Если вызов неожиданно работает на шаге 3, вам необходимо явно установить заголовки кеша на свои сервлеты RPC. Мы сделали это, используя фильтр запросов, который добавил заголовки на правильные пути.

Мы установили

Cache-control: no-cache 

Это исправили проблему для нас.

Найти более подробную информацию о правильных настройках кэша здесь Is Safari on iOS 6 caching $.ajax results?

+0

Привет спасибо за ответ, согласно моему пониманию GWT RPC использует метод POST по-прежнему требуется кэш? если да, то как установить «Cache-control: no-cache» для службы RPC? – Sivasankar

+0

Проблема iOS заключается в том, что некоторые версии POST-запросов кэширования Safari. Как я уже сказал, мы добавили фильтр запроса для добавления заголовка. – thst

+0

Привет, это решило проблему в телефоне Windows, но в iPad по-прежнему мой RPC сбой случайным образом ниже, мой фильтр устанавливает фильтр long now = System.currentTimeMillis(); HttpServletResponse HTTPResponse = (HttpServletResponse) ответ; httpResponse.setDateHeader («Дата», теперь); httpResponse.setDateHeader («Истекает», теперь - 86400000L); // один день httpResponse.setHeader («Pragma», «no-cache»); httpResponse.setHeader («Cache-control», «no-cache, no-store, must-revalidate, max-age = 0, post-check = 0, pre-check = 0»); – Sivasankar