лекция 14.ppt
- Количество слайдов: 24
Сетевое взаимодействие Санкт-Петербург, 2016
Взаимодействие клиента и сервера
Протокол HTTP/HTTPS
Протокол HTTP
HTTP-запрос
HTTP-ответ
Методы HTTP-запроса:
HTTPS, протокол HTTP с поддержкой шифрования.
Серверное взаимодействие Server
О чем нужно помнить при реализации сетевой части приложения Первое – это трафик. Не всегда есть возможность работать по бесплатному Wi-Fi-соединению, а мобильный интернет всё еще дорогой, и об этом нужно помнить, потому что трафик – это деньги пользователя. Второе – это лимит батарейки. Мобильные устройства необходимы пользователю для каких-то повседневных дел, совещаний, прогулок, бизнеса, и когда батарейка садится в самый неподходящий момент, пользователь негодует. Третье – это безопасность. Так как все-таки речь идет о мобильных клиентах, и данные гуляют по сети от клиента к серверу и обратно, то их необходимо защищать.
Подход на основе сокетов
Частые опросы (polling)
Длинные опросы (long polling)
Механизм long polling, или пуш-уведомлений (push notifications)
Библиотеки для работы с сетью
Http. Url. Connection ▪ ▪ ▪ ▪ Lightweight Один класс Прост в использовании Поддержка всего, что нужно В поздних версиях gzip из коробки, кэширование, авторизация и проч. Рекомендован Google Баги
Http. Url. Connection connection = null; try { URL url = new URL("http: //example. com"); connection = (Http. Url. Connection) url. open. Connection(); connection. set. Request. Method("GET"); connection. set. Request. Property("Accept", "text/plain"); connection. connect(); int status. Code = connection. get. Response. Code(); . . . read. Text. From. Server(); } catch (Exception e) { e. print. Stack. Trace(); } finally { if (connection != null) { connection. disconnect(); } }
Apache Http. Client ▪ ООП ▪ Тяжеловесный – не больше одного экземпляра на приложение ▪ Из коробки не поддерживает многопоточность ▪ Больше не поддерживается
Apache Http. Client try { Http. Get request = new Http. Get("http: //example. com"); request. set. Header("Accept", "text/plain"); Http. Response response = get. Http. Client(). execute(request); int status. Code = response. get. Status. Line(). get. Status. Code(); . . . return Entity. Utils. to. String(response. get. Entity()); } catch (Exception e) { e. print. Stack. Trace(); }
Http. Url. Connection VS. Http. Client
Volley & Retrofit 2013 год стал в этом плане весьма эффективным. Появились замечательные библиотеки Volley и Retrofit. Volley — библиотека более общего плана, предназначенная для работы с сетью, в то время как Retrofit специально создана для работы с REST Api. И именно последняя библиотека стала общепризнанным стандартом при разработке клиент-серверных приложений.
Retrofit: У Retrofit, по сравнению с другими средствами, можно выделить несколько основных преимуществ: 1) Крайне удобный и простой интерфейс, который предоставляет полный функционал для выполнения любых запросов; 2) Гибкая настройка — можно использовать любой клиент для выполнения запроса, любую библиотеку для разбора json и т. д. ; 3) Отсутствие необходимости самостоятельно выполнять парсинг json-а — эту работу выполняет библиотека Gson; 4) Удобная обработка результата и ошибок; 5) Поддержка Rx, что тоже является немаловажным фактором сегодня.
Volley: Volley автоматически составляет все сетевые запросы. Volley будет принимать на себя все сетевые запросы вашего приложения выполнять их для извлечения ответа или изображения с веб-сайтов. Volley обеспечивает прозрачность дискового кэширования и кэширования в памяти. Volley обеспечивает мощное API для отмены запроса. Можно отменить один запрос или установить несколько запросов для отмены. Volley предоставляет мощные возможности изменения. Volley предоставляет инструменты отладки и трассировки.
Дополнительный материал Полезные ссылки https: //developer. android. com/reference/java/net/Http. URLConnection. html https: //developer. android. com/training/basics/network-ops/connecting. html https: //developer. android. com/training/volley/index. html https: //developer. android. com/training/connect-devices-wirelessly/nsd. html https: //developer. android. com/reference/android/os/Async. Task. html http: //www. intuit. ru/studies/courses/4455/712/lecture/21291? page=2 http: //square. github. io/retrofit/ http: //www. androidhive. info/2016/05/android-working-with-retrofit-http-library/ http: //www. androidhive. info/2014/05/android-working-with-volley-library-1/ http: //vickychijwani. me/retrofit-vs-volley/ https: //github. com/codepath/android_guides/wiki/building-simple-chat-client-with-parse http: //www. vogella. com/tutorials/Java. Library-Ok. Http/article. html http: //www. vogella. com/tutorials/Java. Networking/article. htm l https: //habrahabr. ru/company/e-Legion/blog/265405/
лекция 14.ppt