JSoup пропускает элементы Android - PullRequest
1 голос
/ 12 декабря 2011

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) {
    }

}

1 Ответ

1 голос
/ 12 декабря 2011

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

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

...