GET HTTP请求以更新textview

时间:2019-01-21 13:08:25

标签: java android android-studio

我正在开发一个需要执行GET请求以更新屏幕上的TextView的应用程序,现在我用一个按钮来执行此操作,但是我需要不断更新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 :(得分:0)

一种实现此目的的方法是运行一个线程,该线程不断以较小的时间间隔命中服务器以获取新数据并更新ui。这不是处理问题的适当方法,因为即使没有更新,应用程序也会不断反复访问服务器。

第二种方法(这是首选方法,但需要额外的努力)是使用类似Push-notification Firebase Realtime Database的方法。  或XMPP服务器。这样,您的服务器就会将新数据告知客户端应用。

从Firebase实时数据库的官方网站

  

Firebase实时数据库是一个云托管数据库。数据存储为JSON,并实时同步到每个连接的客户端。当您使用我们的iOS,Android和JavaScript SDK构建跨平台应用程序时,您的所有客户端都共享一个实时数据库实例,并自动接收具有最新数据的更新。