--- miscJava/SpejdernetScraper/src/dk/thoerup/spejdernetscraper/ScraperWorker.java 2013/11/15 07:59:04 2072 +++ miscJava/SpejdernetScraper/src/dk/thoerup/spejdernetscraper/ScraperWorker.java 2014/04/07 10:15:59 2138 @@ -1,13 +1,13 @@ package dk.thoerup.spejdernetscraper; +import java.util.List; import java.util.Map; import java.util.TreeMap; -import javax.servlet.http.HttpUtils; - -import org.jsoup.Connection.Method; import org.jsoup.Connection.Response; import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.FormElement; import dk.thoerup.genericjavautils.HttpUtil; @@ -26,32 +26,31 @@ Response res = Jsoup.connect("http://medlemssystem.spejdernet.dk/login.aspx?ReturnUrl=%2f").execute(); Map cookies = res.cookies(); + Document loginPage = res.parse(); + rb.addString("Got login page"); + + + List forms = loginPage.getElementsByAttributeValue("name", "aspnetForm").forms(); + FormElement loginForm = forms.get(0); - res = Jsoup - .connect("http://medlemssystem.spejdernet.dk/Login.aspx?changeuser=1") - .data("ctl00$main$loginForm$_txtUserName", "torbenhoerupnielsen", - "ctl00$main$loginForm$_txtPassword", "Pwspejder2013", - "ctl00$main$loginForm$_buttonLogin", "Login", - "__EVENTTARGET", "", - "__EVENTARGUMENT", "", - "__VIEWSTATE", "/wEPDwUJNjg2MjA4NzU2D2QWAmYPZBYCAgMPZBYGAgEPDxYCHgdWaXNpYmxlaGRkAgIPZBYIAgkPDxYCHwBoZGQCDQ8PFgIfAGhkZAIPDw8WAh8AaGRkAhMPDxYCHwBoZGQCAw9kFgICAQ9kFgRmDw8WAh8AaGRkAgYPDxYCHwBoZGRk8Vg6q/CGyZv+RzwBkdn5NiLJnoGAlWgM6iWe62LJuHM=", - "ctl00$ctl04$hiddenTab", "" - ) - .method(Method.POST) - .cookies(cookies) - .execute(); + loginForm.getElementById("ctl00_main_loginForm__txtUserName").attr("value","torbenhoerupnielsen"); + loginForm.getElementById("ctl00_main_loginForm__txtPassword").attr("value","Pwspejder2013"); + System.out.println( loginForm.formData() ); + + res = loginForm.submit().execute(); + //System.out.println( res.body() ); //DEBUG rb.addString("Login OK"); //This will get you cookies cookies.putAll( res.cookies() ); - //printMap(cookies); - + //printMap(cookies); String dataCsvUrl = "http://medlemssystem.spejdernet.dk/csvx.ashx?q=JQBOZXRtZXN0ZXIuS0ZVTS5NZW1iZXIsIE5ldG1lc3Rlci5LRlVNPgB4LlVuaXQuR3JvdXAuSWQgPT0gImd1aWQ6NWMwY2Y2MzgtZGM4Ny00MTNmLTkxYjYtOWM3MzAwYzcwMTM3Ig==&type=Member&view=csv"; //And this is the easieste way I've found to remain in session Response data = Jsoup.connect(dataCsvUrl).cookies(cookies).timeout(10000).execute(); if ( ! data.contentType().equalsIgnoreCase("text/x-csv; charset=iso-8859-1") ) { + rb.addString("Data.csv - has the wrong content type: " + data.contentType()); return; } @@ -97,5 +96,22 @@ System.out.println( ResultBuffer.getResultBuffer().getString() ); } + + /* + * + * Just fore reference, here's the old login method + res = Jsoup + .connect("http://medlemssystem.spejdernet.dk/Login.aspx?changeuser=1") + .data("ctl00$main$loginForm$_txtUserName", "", + "ctl00$main$loginForm$_txtPassword", "", + "ctl00$main$loginForm$_buttonLogin", "Login", + "__EVENTTARGET", "", + "__EVENTARGUMENT", "", + "__VIEWSTATE", viewState.attr("value"), + "ctl00$ctl04$hiddenTab", "" + ) + .method(Method.POST) + .cookies(cookies) + .execute();*/ }