ПОЛУЧИТЬ HTTP-запрос на обновление текстового представления - PullRequest
0 голосов
/ 21 января 2019

Я работаю над приложением, которому нужно выполнить запрос GET для обновления TextView на экране, сейчас я делаю это с помощью кнопки, но мне нужно постоянно обновлять текстовое представление. Каков наилучший способ или практика, чтобы сделать это? здесь код запроса, кнопка просто вызывает его и помещает строку ответа в TextView.

protected void getEquiposHTTP() {
    //Método GET HTTP al servicio Cloudant IBM para las credenciales dadas
    final OkHttpClient client = new OkHttpClient();

    Uri.Builder builder = new Uri.Builder();
    builder.scheme("https")
            .authority("data")
            .appendPath("data")
            .appendPath("data")
            .appendPath("data")
            .appendPath("data")
            .appendPath("data")
            .appendQueryParameter("data", "data");
    String myUrl = builder.build().toString();

    byte[] encoding = Base64.encodeBase64(("data" + ":" + "data").getBytes());
    String encodedString = new String(encoding);

    final Request request = new Request.Builder()
            .url(myUrl)
            .addHeader("Content-Type", "application/json")
            .addHeader("Authorization", "Basic " + encodedString)
            .addHeader("cache-control", "no-cache")
            .build();

    client.newCall(request).enqueue(new Callback() {
        @Override
        public void onFailure(Call call, IOException e) {
            String mMessage = e.getMessage().toString();
            call.cancel();
            Log.e(TAG, "Problem at HTTP connection and call.cancel() executed");
        }

        @Override
        public void onResponse(Call call, Response response) throws IOException {

            if (response.isSuccessful()) {
                try {
                    addToListEquipos(response.body().string());

                } catch (Exception e) {
                    Log.e(TAG, "Problem at response of HTTP conection, response.isSuccessful() = true then try{} fail");
                }
            }
        }

    });

}

1 Ответ

0 голосов
/ 21 января 2019

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

Второй способ (который более предпочтителен, но требует дополнительных усилий) - использовать что-то вроде Push-уведомления, База данных Firebase Realtime или XMPP сервер. Таким образом, ваш сервер сообщит клиентскому приложению о новых данных.

С официального сайта базы данных Firebase Realtime

База данных Firebase Realtime - это облачная база данных. Данные хранятся в формате JSON и синхронизируются в режиме реального времени с каждым подключенным клиентом. Когда вы создаете кроссплатформенные приложения с помощью наших SDK для iOS, Android и JavaScript, все ваши клиенты совместно используют один экземпляр базы данных в реальном времени и автоматически получают обновления с самыми новыми данными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...