Иногда IoException: пометить недействительное приложение Jsoup для Android - PullRequest
0 голосов
/ 22 декабря 2019

У меня небольшая проблема с моим кодом / программой. Итак, позвольте мне сначала объяснить, что он должен делать. Когда я нажимаю кнопку, она подключается через Jsoup на веб-сайте от нашего партнера, поэтому я не могу опубликовать ссылку здесь и получить с сайта информацию о бесплатных парковочных местах. После этого он меняет цвет текстовых полей на красный, если используется парковочное место.

Иногда я получаю эту ошибку.

W / System.err: java.io.IOException: пометить недействительным

и помечает .get ();в итоговом документе doc

Странно для меня то, что иногда это работает, а иногда нет, и я получаю исключение. У меня нет идеи, что делать сейчас.

Вотмой код

Thread connection= new Thread(new Runnable() {
    @Override
    public void run() {

        try {
        String URL = "URL";

        Connection.Response res = Jsoup.connect(URL)
                .data("loginTextField", "login", "pwdTextField", "password")
                .method(Method.POST)
                .execute();

        String cookieID = res.cookie("PHPSESSID");

        final Document doc = Jsoup.connect(URL)
                .cookie("PHPSESSID", cookieID)
                .get();

        runOnUiThread(new Runnable() {
            @Override
            public void run() {

                String doc1 = doc.outerHtml();

                Scanner scanner = new Scanner(doc1);
                while (scanner.hasNextLine()) {
                    String line = scanner.nextLine();


                    if (line.contains("Status : full") {
                        park1 = (TextView) findViewById(R.id.textView4);
                        park1.setBackgroundColor(Color.RED);
                    }

                }
                scanner.close();

            }
        });
    } catch (IOException e) {
            e.printStackTrace();
        }
    }});

1 Ответ

0 голосов
/ 23 декабря 2019

Это известная проблема, уже сообщенная как ошибка в Jsoup: https://github.com/jhy/jsoup/issues/1218

В качестве обходного пути вы можете написать ее немного по-другому, поэтому вместо

final Document doc = Jsoup.connect(URL)
     .cookie("PHPSESSID", cookieID)
     .get();

вам следует попробовать

Response response = Jsoup.connect(URL)
     .cookie("PHPSESSID", cookieID)
     .execute();
final Document doc = Jsoup.parse(response.body());
...