Кажется, что 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) {
}
}
Какой-то странный код здесь... поэтому я понимаю, что это делает запрос, который в итоге возвращает список гиперссылок, и вы очищаете экран для первой гиперссылки, а затем пытаетесь загрузить контент этой второй ссылки? Ну, вы уверены, что сервер возвращает действительную гиперссылку? Попробуйте загрузить страницу в своем браузере.
Если он действителен, то я не уверен, в чем проблема, но почему бы вам не использовать WebView.loadUrl()
, и пусть компонент браузера позаботится об этом?