recently trying make app concerns specific website. need have access page has visible content after logging. if understand, below code shows firstly need connect url1 avoid default mainpage here cannot send data (login, password). need see content url3, here cannot send data because there no login , password field. in url2. tried other solutions website, receive content visible everyone. can help?
private class parser extends asynctask<void, void, void> { string h; string url1 = "http://www.klt.net.pl/"; string url2 = "http://www.klt.net.pl/index.php?a=logowanie"; string url3 = "http://www.klt.net.pl/index.php?a=przedmecz1&b=2&d=2038"; @override protected void onpreexecute() { super.onpreexecute(); pd = new progressdialog(mainactivity.this); pd.settitle("parser"); pd.setmessage("loading..."); pd.setindeterminate(false); pd.show(); } @override protected void doinbackground(void... params) { try { connection.response response = jsoup.connect(url1) .method(connection.method.get) .timeout(50000) .followredirects(true) .execute(); document document = jsoup.connect(url2) .cookies(response.cookies()) .get(); } catch (ioexception e) { e.printstacktrace(); } return null; } @override protected void onpostexecute(void result) { pd.dismiss(); } }
edit:
@override protected void doinbackground(void... params) { try { connection.response response = jsoup.connect(url1) .method(connection.method.get) .timeout(50000) .followredirects(true) .execute(); connection.response loginres = jsoup.connect(url2) .useragent("mozilla/5.0 (macintosh; intel mac os x 10_10_5) applewebkit/537.36 (khtml, gecko) chrome/44.0.2403.157 safari/537.36") .data("login", getlog2, "haslo", getpass2) .cookies(response.cookies()) .method(method.post) .execute(); map<string, string> cookies = new map<string, string>(); cookies.addall(loginres.cookies()); connection.response otherres = jsoup.connect(url3) .cookies(cookies) .method(method.post) .execute(); d3 = jsoup.connect(url3) .cookies(otherres.cookies()) .get();
my updated code. ok? have error in map (cannot instatiate type , cannot resolved type).
to login need know data post (id, password, session cookie , etc...), , url address need post to.
this information contained in login form, i'll explain steps required below:
step 1: id , password need enter login should inputs of form. right-click area type in id , select inspect element
(assuming on chrome). there able inspect property of inputs , form.
step 2: closely investigate form , keep record of all input fields (including hidden fields). need know name
, value
of fields. need know if form request made in get
or post
, action
value form.
step 3: let's fun part. use following code snippet make request server , retrieve desired content.
connection.response loginres = jsoup.connect(loginurl) .useragent("mozilla/5.0 (macintosh; intel mac os x 10_10_5) applewebkit/537.36 (khtml, gecko) chrome/44.0.2403.157 safari/537.36" .data("login", yourid "haslo", yourpassword) .cookies(response.cookies()) //this same cookie used url2! .method(method.post) .execute();
loginurl
request address, in case"http://www.klt.net.pl/index.php?a=logowanie"
.useragent
tells server browser details.data
put name&value pairs of input fields in form.cookies
put cookies, need check if request requires cookies accepted server, can checked in network tab under "cookies" section. in case, same cookie used url2.method
specifies request method.
the retrieved loginres
object contain info need, html, cookies , everything.
after you've logged in, make sure store cookie value in map object below:
map<string, string> cookies; cookies.putall(loginres.cookies());
and make sure pass cookies
cookies parameter in future requests, below:
connection.response otherres = jsoup.connect(otherurl).cookies(cookies)....
this ensure login session maintained , server knows authenticated user.
----------------update------------
declare map cookie beginning of doinbackground task. store all cookies after make every request. so:
cookies = response.cookies(); cookies.putall(loginres.cookies(); cookies.putall(otherres.cookies();
Comments
Post a Comment