Статья - 06
"Мобильный сайт"
Я делал мобильную версию одного сайта и столкнулся с парой моментов,
про которые я хотел бы рассказать:
Если в нескольких словах, то приложение обменивается запросами с сервером,
читая и записывая данные в базу данных.
Для отправки запросов я использую HTTP библиотеку volley, она упрощает работу с запросами и работает быстрее.
Первый момент, с которым я столкнулся - volley кэширует запросы, что довольно мешает разработке.
Так как несмотря на изменения запроса, отправляется кэшированный запрос и по неопытности можно подумать,
что изменения не работают.
Для обновления запроса приходится перезапускать виртуальное устройство (cold boot) или удалять приложение на физическом,
также можно отключить кэширование на время разработки.
request.setShouldCache(false);
Далее тонкости на стороне сайта. Сайт написан на php и внешний клиент не был запланирован.
Поэтому, чтобы подружить андроид приложение с сайтом, разрешить авторизоваться с мобильного устройства,
пришлось изменить и сам сайт.
Во-первых.
Идентификация на php отправляет форму с логин/регистрационными данными.
Далее php принимает форму, извлекает данные и работает с ними.
Но если в js есть объект FormData(), с помощью которого можно отправлять формы на сервер,
то java не умеет отправлять нужные php формы.
Volley умеет обмениваться только json`ом, и через переменную $_POST php-сервер получить отправляемые данные не сможет
И сайту приходится брать данные напрямую из файла php://input и преобразовывая их в строку:
file_get_contents('php://input');
Во-вторых. При идентификации php создает или возобновляет сессию cookie:PHPSESSID=xxx при помощи session_start().
Но андроид является безкуковым клиентом, то есть не генерирует куки.
Поэтому приходится сохранять, создаваемые на сервере, куки в базу данных и пересылать между клиентом и сервером.
Вот проблемы с которыми я столкнулся при создании мобильной версии вебсайта.
Спасибо за внимание!