![](/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.