使用HTTP post方法和jsoup登录asp.net

时间:2015-11-08 11:59:08

标签: android asp.net http-post html-parsing jsoup

我最近正在尝试为我的学校朋友开发一个Android应用程序,所以他们不必使用网络浏览器,而是一个简单的应用程序来检查他们更新的成绩和考试时间表,但因为学校不会允许使用他们的数据库唯一的方法是进行HTML解析。 所以我找到了这个库Jsoup和一个例子,并开始编写我自己的代码,但它总是带给我页面登录的页面源(它根本没有登录)

public Document getHTMLsoure() {
Document doc=null;
    try {
         doc = Jsoup.connect("http://karinca.meliksah.edu.tr")
                 .data("ctl00$ContentPlaceHolder1$txtKullaniciAdi","usernm")
                .data("ctl00$ContentPlaceHolder1$txtSifre", "passwd")
                .data("ctl00$ContentPlaceHolder1$btnLogin", "Giriş")


                .userAgent("Mozilla")

                .post();
    } catch (IOException e1) {
        e1.printStackTrace();
    }

返回doc; }

1 个答案:

答案 0 :(得分:3)

请检查。
结果Kullanıcı adı yada şifre hatası !

Response res = Jsoup
        .connect("https://karinca.meliksah.edu.tr/View/Login")
        .userAgent("Mozilla")
        .execute();

Document doc = res.parse();

String eventArgument = doc.select("input[name=__EVENTARGUMENT]").val();
String viewState = doc.select("input[name=__VIEWSTATE]").val();
String viewStateGenerator = doc.select("input[name=__VIEWSTATEGENERATOR]").val();
String eventValidation = doc.select("input[name=__EVENTVALIDATION]").val();
String asyncPost = "true";

String ct = "";

String body = doc.body().html();

int indexOf = body.indexOf("Sys.WebForms.PageRequestManager._initialize(");;
if(indexOf > -1){

    int indexEnd = body.substring(indexOf).indexOf("');");

    if(indexEnd > -1){

        String temp  = body.substring(indexOf, indexOf+indexEnd);
        int indexStart = temp.lastIndexOf("'");
        ct = temp.substring(indexStart+1,temp.length());
    }
}

Document   doc1 = Jsoup.connect("https://karinca.meliksah.edu.tr/View/Login.aspx")

    .referrer("https://karinca.meliksah.edu.tr/View/Login")
    .cookies(res.cookies())
    .data(ct+"$ContentPlaceHolder1$ScriptManager2",ct+"$ContentPlaceHolder1$UpdatePanel1|"+ct+"$ContentPlaceHolder1$btnLogin")
    .data(ct+"$ContentPlaceHolder1$txtKullaniciAdi","usernm")
    .data(ct+"$ContentPlaceHolder1$txtSifre", "passwd")
    .data("__EVENTTARGET",ct+"$ContentPlaceHolder1$btnLogin")
    .data("__EVENTARGUMENT",eventArgument)
    .data("__VIEWSTATE",viewState)
    .data("__VIEWSTATEGENERATOR",viewStateGenerator)
    .data("__EVENTVALIDATION",eventValidation)
    .data("__ASYNCPOST",asyncPost)
    .userAgent("Mozilla")
    .post();


System.out.println(doc1.html());