我正在尝试使用jsoup登录网站,我很确定我正在解析我需要的所有内容,我只是无法弄清楚什么是错的。
我使用此作为参考:http://cs.harding.edu/fmccown/android/Logging-into-Pipeline.pdf
以下是我的AsycnTask doInBackground中的代码:
Connection.Response loginForm = Jsoup.connect(url)
.userAgent("Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6")
.referrer("http://www.google.com")
.method(Connection.Method.GET)
.timeout(10000)
.execute();
Document doc = loginForm.parse();
//Random values you need to parse to lectio
String VIEWSTATEXvalue = doc.select("input[name=__VIEWSTATEX").attr("value");
String EVENTVALIDATIONvalue = doc.select("input[name=__EVENTVALIDATION").attr("value");
Log.v("MainActivity",VIEWSTATEXvalue + EVENTVALIDATIONvalue);
doc = Jsoup.connect(url)
.userAgent("Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6")
.referrer("http://www.google.com")
.data("m$Content$username2", username)
.data("m$Content$password2", password)
.data("__VIEWSTATEX",VIEWSTATEXvalue)
.data("__EVENTVALIDATION",EVENTVALIDATIONvalue)
.data("__EVENTTARGET","m$Content$submitbtn2")
.cookies(loginForm.cookies())
.post();
Log.v("MainActivity", doc.toString());
但问题是当我登录时它不包含页面文档,它包含一个错误页面的文档,只是说“出了问题”。
我猜这是因为我没有解析所有参数。
这是我尝试登录的页面:https://www.lectio.dk/lectio/11/login.aspx?lecafdeling=4733693054
调查了一些提交的表格,这是我能找到的:
//<![CDATA[
var theForm = document.forms['aspnetForm'];
if (!theForm) {
theForm = document.aspnetForm;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
但我不知道如何解析这些
的正确值答案 0 :(得分:1)
查看浏览器发送内容的更简单方法是检查原始http请求并只复制标头。您可以通过按F12
打开开发工具来使用Chrome执行此操作。选择Network
。左上方有一颗子弹。将其悬停并显示Record Network Log
。这必须是红色的。如果没有按下它。这将记录您将发送的请求的所有流量。您将在下表中列出多行。按Method
排序并选择值为POST
的行(按列Name
的值。这是您要发送的实际请求。在右边的面板上选择{{ 1}}。检查Headers
和Request Headers
。检查所有这些值是否相同。这有助于您对某些缺少的值进行硬编码。
答案 1 :(得分:0)
我必须使用
String EVENTVARGUMENTvalue = doc.select("input[name=__EVENTARGUMENT").attr("value");