Как использовать веб-API из вашего Android-приложения

Веб-API в Android

Предоставлено: Адам Синицки / Android Authority.

Веб-API — это интерактивный «интерфейс прикладного программирования», который позволяет разработчикам взаимодействовать с внешними службами. Это команды, которые, по мнению разработчика службы, будут использоваться для доступа к определенным функциям их программы. Он называется интерфейсом, потому что в хорошем API должны быть команды, делающие его интуитивно понятным для взаимодействия.

Примером этого может быть случай, когда мы хотим получить информацию о пользователе из его учетной записи в социальной сети. Эта платформа социальных сетей, скорее всего, будет иметь веб-API, который разработчики будут использовать для запроса этих данных. Другие часто используемые API обрабатывают такие вещи, как реклама (AdMob), машинное обучение (ML Kit) и облачное хранилище.

Легко увидеть, как взаимодействие с этими типами служб может расширить функциональность приложения. Фактически, подавляющее большинство успешных приложений в Play Store будут использовать хотя бы один веб-API!

В этом посте мы рассмотрим, как использовать веб-API из приложения для Android.

Как работает веб-API

Большинство API работают с использованием XML или JSON. Эти языки позволяют нам отправлять и получать большие объемы полезной информации в виде объектов.

XML — это расширяемый язык разметки. Если вы разработчик Android, то вы, вероятно, уже знакомы с XML по созданию макетов и сохранению переменных.

XML прост для понимания и обычно помещает ключи в треугольные скобки, за которыми следуют их значения. Это немного похоже на HTML:

Джефф 32

JSON, с другой стороны, означает «Нотация объектов Javascript». Это сокращение для отправки данных в Интернете. Подобно XML или CSV-файлу, его можно использовать для отправки «пар значение / атрибут».

Однако здесь синтаксис выглядит немного иначе:

[{client: {“name”:”Jeff”, “age”: 32}}]

Это «объекты данных» в том смысле, что они являются концептуальными сущностями (в данном случае людьми), которые могут быть описаны парами ключ / значение. Мы используем их в наших приложениях для Android, превращая их в объекты, как обычно, с использованием классов.

См. Также: Как использовать классы в Java

Чтобы увидеть это в действии, нам нужно найти веб-API, который мы сможем легко использовать. В этом примере мы будем использовать Заполнитель JSON. Это бесплатный REST API специально для тестирования и создания прототипов, который идеально подходит для изучения нового навыка! ОТДЫХ это особый архитектурный «стиль», ставший стандартом для связи по сетям. Системы, совместимые с REST, называются «RESTful» и обладают определенными характеристиками. Однако вам не нужно сейчас об этом беспокоиться.

Настройка нашего проекта для Retrofit 2

В этом примере мы также будем использовать что-то под названием Retrofit 2. Модернизация 2 — чрезвычайно полезный HTTP-клиент для Android, который позволяет приложениям безопасно подключаться к веб-API с гораздо меньшим количеством кода с нашей стороны. Затем это можно использовать, например, для отображения твитов из Twitter или для проверки погоды. Это значительно сокращает объем работы, которую нам нужно сделать, чтобы это заработало.

См. Также: Использование API: начало работы с дооснащением на Android

Во-первых, нам нужно добавить разрешение в Интернет в наш файл манифеста Android, чтобы убедиться, что нашему приложению разрешено выходить в Интернет. Вот что вам нужно включить:

<использует-разрешение android: name = "aandroid.permission.INTERNET" />

Нам также необходимо добавить зависимость, если мы собираемся заставить Retrofit 2 работать в нашем приложении. Итак, в вашем файле build.gradle на уровне модуля добавьте:

реализация ‘com.squareup.retrofit2: retrofit: 2.4.0’

Нам также понадобится что-то под названием Gson:

реализация ‘com.squareup.retrofit2: converter-gson: 2.4.0’

Gson — это то, что будет преобразовывать данные JSON в объект Java для нас (процесс, называемый десериализацией). Мы могли бы сделать это вручную, но использование подобных инструментов значительно упрощает жизнь!

На самом деле существуют более поздние версии Retrofit, в которые внесены некоторые изменения. Если вы хотите быть в курсе событий, обратите внимание на официальный сайт.

Преобразование JSON в объект Java

«Маршрут» — это URL-адрес, представляющий конечную точку для API. Если мы посмотрим на заполнитель JSON, вы увидите, что у нас есть такие параметры, как «/ posts» и «/ comments? PostId = 1». Скорее всего, вы сами видели такие URL-адреса при просмотре веб-страниц!

Нажмите на / posts и вы увидите большой объем данных в формате JSON. Это фиктивный текст, который имитирует внешний вид страницы, полной сообщений в социальных сетях. Это информация, которую мы хотим получить из нашего приложения и затем отобразить на экране.

[{«userId»: 1, «id»: 1, «title»: «sunt aut facere Repellat Provident occaecati excepturi optio resphenderit», «body»: «quia et suscipit nsuscipit recusandae Conquuntur Expedita et cum nrevehenderit molestiae ut ut ut quas totam nnostrum rerum est autem sunt rem eveniet architeo «}, {» userId «: 1,» id «: 2,» title «:» qui est esse «,» body «:» est rerum tempore vitae nsequi sint nihil submithenderit dolor beatae ea dolores neque nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis nqui aperiam non debitis Possimus qui neque nisi nulla «}, {» userId «: 1,» id «: 3,» title «:» ea Тренировкаем репеллят qui ipsa sit aut «,» body «:» et iusto sed quo iure nvoluptatem occaecati omnis eligendi aut ad nvoluptatem doloribus vel accusantium quis pariatur nmolestiae porro eius odio et labore et velit aut «}

Для обработки этой информации нам понадобится класс, который может создавать объекты из десериализованных данных. Для этого создайте в своем проекте новый класс и назовите его «PlaceholderPost». Для этого потребуются переменные, соответствующие данным, которые мы получаем со страницы / posts («body», «ID» и т. Д.). Мы будем получать эту информацию из веб-API, поэтому нам нужен геттер для каждого из них.

Последний класс должен выглядеть так:

открытый класс PlaceholderPost {private int userID; частный int id; частный строковый заголовок; частное тело String; public int getUserId () {вернуть идентификатор пользователя; } public int getId () {идентификатор возврата; } public String getTitle () {вернуть заголовок; } public String getBody () {тело возврата; }}

С таким же успехом это могут быть пользователи Twitter, сообщения в Facebook или информация о погоде!

Файлы интерфейса

Далее нам понадобится новый интерфейсный файл. Вы создаете его так же, как и класс: щелкая имя вашего пакета в окне проекта и выбирая «New> Class», но здесь вы выбираете «Interface» под тем местом, где вы вводите имя. Файл интерфейса содержит методы которые позже реализуются классом. Я назвал свой «PlaceholderAPI».

Этому интерфейсу нужен только один метод для извлечения всех данных из «/ Post». Если вы еще раз взглянете на этот JSON, вы заметите, что фигурные скобки находятся внутри квадратных скобок. Это означает, что у нас есть массив объектов, поэтому мы хотим создать для них список. Объекты — это экземпляры нашего «PlaceholderPost», которые мы только что создали, и вот что мы здесь вставляем!

Для тех, кто очень новичок в программировании, помните, что любые красные линии, вероятно, означают, что вы не импортировали класс. Просто щелкните выделенный оператор и нажмите alt + return, чтобы сделать это автоматически.

(Я не могу представить, чтобы кто-то использовал это как ранний урок программирования, но как знать!)

Это выглядит так:

import java.util.List; импорт retrofit2.Call; import retrofit2.http.GET; открытый интерфейс PlaceholderAPI {@GET («сообщения») Call getPosts (); }

Отображение контента

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

Чтобы использовать Retrofit, нам нужно создать новый объект Retrofit. Мы делаем это с помощью следующих строк кода:

Retrofit retrofit = new Retrofit.Builder () .baseUrl («https://jsonplaceholder.typicode.com/») .build ();

Как видите, здесь мы передаем остальную часть URL-адреса. Затем мы хотим использовать наш интерфейс:

Вызов call = placeholderAPI.getPosts ();

Теперь нам просто нужно вызвать метод! Поскольку до сих пор все было слишком просто, Android не дает вам сделать это в основном потоке. Причина, конечно же, в том, что если процесс займет слишком много времени, приложение заморозит! Это верно при использовании любого веб-API. В этом есть смысл, но это не очень удобно, когда мы просто хотим создать учебник. К счастью, нам не нужно создавать второй поток самостоятельно, поскольку Retrofit фактически делает все это за нас.

Теперь мы получим обратные вызовы onResponse и onFailure. onFailure, конечно, там, где нам нужно обрабатывать любые ошибки.

Однако onResponse не означает, что все прошло гладко. Это просто означает, что был ответ; что сайт существует. Если мы получим сообщение 404, это все равно будет считаться «ответом». Таким образом, нам нужно еще раз проверить, прошел ли процесс гладко, с помощью isSuccessful (), который проверяет, не является ли код HTTP ошибкой.

Для простоты я собираюсь отобразить только один фрагмент данных одного из объектов, которые мы получили. Для этого я переименовал textView в файле макета, присвоив ему идентификатор «текст». Вы можете поэкспериментировать с этим сами.

Полный код выглядит так:

call.enqueue (new Callback () {@Override public void onResponse (Call call, Response response) {if (response.isSuccessful ()) {List posts = response.body (); Log .d («Успех», posts.get (3) .getBody (). toString ()); TextView textView = findViewById (R.id.text); textView.setText (posts.get (3) .getBody (). toString ());} else {Log.d («Yo», «Boo!»); return;}} @Override public void onFailure (Call call, Throwable t) {Log.d («Yo», «Ошибка!»);}}); Log.d («Йо», «Привет!»); }}

Подведение итогов

На этом этапе у вас должно быть хорошее представление о том, как работает веб-API и почему он вам нужен. Вы бы также создали свое первое приложение, которое использует веб-API для выполнения чего-то потенциально полезного.

Конечно, существует бесчисленное множество других веб-API, и каждый работает по-своему. Некоторым потребуются дополнительные SDK или другие библиотеки. Точно так же есть много других действий помимо запроса «GET», который мы продемонстрировали здесь. Например, вы можете использовать «POST» для отправки данных на сервер, что полезно, если вы когда-нибудь хотите, чтобы ваши пользователи могли публиковать сообщения в социальных сетях из ваших приложений.

Возможности безграничны, если объединить мощь и гибкость Android с огромными ресурсами, доступными в Интернете.

Для получения дополнительных новостей, функций и руководств для разработчиков от Android Authority, не пропустите подписку на ежемесячную рассылку новостей ниже!

Будьте в курсе всего, что связано с разработкой для Android

Присоединяйтесь к нашей команде разработчиков, чтобы получать ежемесячный информационный бюллетень для разработчиков, который курируют штатные эксперты!

зарегистрируйтесь сейчас Регистрируясь, вы соглашаетесь с нашими Условиями использования и принимаете методы обработки данных, указанные в нашей Политике конфиденциальности. Вы можете отменить подписку в любое время.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *