![](/img/trans.png)
[英]Having trouble using JSoup to obtain list of artists + tracks from HipHopEarly website
[英]Having trouble loggin into website with Jsoup,
我正在尝试使用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();
}
}
//]]>
但是我不怎么解析这些的正确价值
查看浏览器正在发送的内容的更简单方法是检查原始http请求,然后仅复制标头。 您可以通过按F12
打开“开发工具”来使用Chrome来执行此操作。 选择Network
。 左上方有一个项目符号。 悬停它,它将显示Record Network Log
。 必须是红色的。 如果不是,请按。 这将记录您将发送的请求的所有流量。 您将在下表中找到许多行。 按“ Method
排序,然后选择值为POST
的行(按“ Name
”列的值。这是您要发送的实际请求。在右侧面板上选择“ Headers
。检查“ Request Headers
和Form Data
。检查是否全部这些值是相同的,这将有助于您对一些缺失的值进行硬编码。
我不得不用
String EVENTVARGUMENTvalue = doc.select("input[name=__EVENTARGUMENT").attr("value");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.