Asynctask не загружает весь контент - PullRequest
0 голосов
/ 13 сентября 2018

Я создал этот код для загрузки веб-контента и использовал asynctask. Когда адрес URL начинается с "http", он не возвращает мне ничего, только ошибка в журнале cat.

* "09-12 22: 19: 25.679 6894-6921 / company.krystian.guessthelebrity W / OpenGLRenderer: Не удалось выбрать конфигурацию с EGL_SWAP_BEHAVIOR_PRESERVED, повторная попытка без ...

09-12 22: 19: 25.754 6894-6921 / company.krystian.guessthelebrity E / eglCodecCommon: glUtilsParamSize: неизвестный параметр 0x000082da glUtilsParamSize: неизвестный параметр 0x000082da "*

Но когда адрес URL начинается с "https", он возвращает мне часть содержимого и другую ошибку.

* "09-12 22: 13: 36.330 3057-3784 / company.krystian.guessthelebrity W / OpenGLRenderer: Не удалось выбрать конфигурацию с EGL_SWAP_BEHAVIOR_PRESERVED, повторная попытка без ...

09-12 22: 13: 36.390 3057-3784 / company.krystian.guessthelebrity E / eglCodecCommon: glUtilsParamSize: неизвестный параметр 0x000082da glUtilsParamSize: неизвестный параметр 0x000082da "*

public class MainActivity extends AppCompatActivity {

public class DownloadTask extends AsyncTask<String, Void, String> {

    @Override
    protected String doInBackground(String... urls) {

        String result = "";
        URL url;
        HttpURLConnection urlConnection = null;

        try {
            url = new URL(urls[0]);

            urlConnection = (HttpURLConnection) url.openConnection();

            InputStream in = urlConnection.getInputStream();

            InputStreamReader reader = new InputStreamReader(in);

            int data = reader.read();

            while (data != -1) {

                char current = (char) data;

                result += current;

                data = reader.read();

            }
            return result;


        } catch (Exception e) {

            e.printStackTrace();

            return "Fail";

        }




    }

}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    DownloadTask task = new DownloadTask();
    String result = null;

    try {

        result = task.execute("http://www.ecowebhosting.co.uk/").get();

        Log.i("Contents of URL", result);

    } catch (InterruptedException e) {

        e.printStackTrace();

    } catch (ExecutionException e) {

        e.printStackTrace();

    }


}

1 Ответ

0 голосов
/ 13 сентября 2018

Это мой рабочий код, отсеки, пожалуйста:

private class GetRegisterDateAsyncTask extends AsyncTask<Void, Void, String> {

    @Override
    protected String doInBackground(Void... voids) {
        String result = "";
        try {
            URL url = new URL("YOUR URL HERE");
            BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));

            String inputLine;
            final StringBuffer buffer = new StringBuffer();
            while ((inputLine = in.readLine()) != null) {
                buffer.append(inputLine);
            }

            in.close();

            result = buffer.toString();
        } catch (MalformedURLException e) {
            Crashlytics.logException(e);
            return "";
        } catch (IOException e) {
            Crashlytics.logException(e);
            return "";
        } catch (Exception e) {
            Crashlytics.logException(e);
            return "";
        }

        return result;
    }

    @Override
    protected void onPostExecute(String result) {
        try {
             // check and use the result here
             ...
        } catch (Exception e) {
            Crashlytics.logException(e);
        }
    }
}

и это телефонный код:

  GetRegisterDateAsyncTask registerDateAsyncTask = new GetRegisterDateAsyncTask();
        registerDateAsyncTask.execute();

Удачи)

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