JSoup пропускает элементы Android

1

Кажется, что JSoup пропускает некоторые элементы в моей строке HTML. Я на 100% уверен, что все в HTML-строке, но JSoup только читает некоторые элементы, когда я выбираю их для анализа или вообще ничего. Но я знаю, что они существуют. Вот мой код: Спасибо:

public void parseDoc() {
    final HttpParams params = new BasicHttpParams();
    HttpClientParams.setRedirecting(params, true);
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost(
            "https://secure.groupfusion.net/processlogin.php");
    String HTML = "";
    try {
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(3);
        nameValuePairs.add(new BasicNameValuePair("referral_page",
                "/modules/gradebook/ui/gradebook.phtml?type=student_view"));
        nameValuePairs.add(new BasicNameValuePair("currDomain",
                "beardenhs.knoxschools.org"));
        nameValuePairs.add(new BasicNameValuePair("username", username
                .getText().toString()));
        nameValuePairs.add(new BasicNameValuePair("password", password
                .getText().toString()));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        HttpResponse response = httpclient.execute(httppost);

        HTML = EntityUtils.toString(response.getEntity());
        Document doc = Jsoup.parse(HTML);
        Element link = doc.select("a").first();
        String linkHref = link.attr("href");
        HttpGet request = new HttpGet();
        try {
            request.setURI(new URI(linkHref));
        } catch (URISyntaxException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        response = httpclient.execute(request);
        String html = "";
        InputStream in = response.getEntity().getContent();
        BufferedReader reader = new BufferedReader(
                new InputStreamReader(in));
        StringBuilder str = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null) {
            str.append(line);
        }
        in.close();
        HTML = str.toString();
        doc = Jsoup.parse(HTML);
        Elements divs = doc.select("div.yuiTop");
        for (Element d: divs) {
            sting.append(d.text());
            sting.append("\n");
        }


    } catch (ClientProtocolException e) {
    } catch (IOException e) {
    }

}
Теги:
jsoup
http-get
httpresponse

1 ответ

1
Лучший ответ

Какой-то странный код здесь... поэтому я понимаю, что это делает запрос, который в итоге возвращает список гиперссылок, и вы очищаете экран для первой гиперссылки, а затем пытаетесь загрузить контент этой второй ссылки? Ну, вы уверены, что сервер возвращает действительную гиперссылку? Попробуйте загрузить страницу в своем браузере.

Если он действителен, то я не уверен, в чем проблема, но почему бы вам не использовать WebView.loadUrl(), и пусть компонент браузера позаботится об этом?

  • 0
    Я обнаружил источник проблемы, но я не знаю, как ее исправить. Что мне нужно сделать, это очистить таблицу от этой конкретной страницы и распечатать ее в TextView. Я знаю, что для этого мне нужно использовать JSoup, но похоже, что JSoup не может найти каждый элемент на странице. Любая идея? Он не может найти нужную мне таблицу, строка всегда возвращает пустую.
  • 0
    Мне просто нужно получить HTML-код HTTPGEt. Благодарю.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню