Как сохранить результат из GET-запроса с OkHttp в локальной переменной? - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь сделать запрос Get с помощью OkHttp на Java. Я сделал это успешно, используя асинхронные потоки, но я "застрял" внутри функции onResponse. Я имею в виду, я не могу использовать результат запроса нигде, кроме как в этой функции. Как я могу сделать, чтобы этот код работал?

            OkHttpClient client = new OkHttpClient();

            Request request = new Request.Builder()
                    .url("https://raw.github.com/square/okhttp/master/README.md")
                    .build();

            client.newCall(request).enqueue(new Callback() {
                @Override
                public void onFailure(Call call, IOException e) {
                    e.printStackTrace();
                }

                @Override
                public void onResponse(Call call, final Response response) throws IOException {
                        final String responseData = response.body().string();
                    LoginInscription.this.runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            TextView tv = findViewById(R.id.txtString);
                            tv.setText(responseData);
                        }
                    });
                }
            });

            TextView tv = findViewById(R.id.txtString);
            String res = tv.getText().toString();

            System.out.println(res);

Спасибо ...

1 Ответ

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

Я уверен, что ваш System.out.println(res); может не работать, так как область действия final String res заканчивается до этого.

Вы можете объявить переменную / метод уровня деятельности / класса, который может быть обновлен onResponse(). Например:

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

    final String myResponse = response.body().string();
    MainActivity.this.runOnUiThread(new Runnable() {
        @Override
        public void run() {
            txtString.setText(myResponse);
        }   
    });
}

Получить больше примеров на: https://www.journaldev.com/13629/okhttp-android-example-tutorial

...