Jsoup得到不同的HTML,只有默认查询页面,而不是结果页面

时间:2016-01-04 02:37:30

标签: android jsoup

我试图从网站上检索一些停车数据,以便在Android中显示。 现在我试图从这个站点查询一些数据(AB-5678) E-BILL(中文) 查询页面和结果页面都使用相同的URL。

Chrome控制台

以下是我在成功查询后在Chrome控制台中发布的内容。

(报头)
enter image description here

(数据)
enter image description here

我尝试再次使用Chrome插件查询 - POSTMAN,他也给了我一个成功的结果页面。 enter image description here

但是,当我利用Jsoup查询数据时如下

    Connection.Response resource = Jsoup.connect("https://ebill.ba.org.tw/CPP//DesktopDefault.aspx?TabIndex=4&TabId=153")
        .timeout(Define.WEBTIMEOUT)
        .method(Connection.Method.GET)
        .execute();
    Document document = Jsoup.connect("https://ebill.ba.org.tw/CPP//DesktopDefault.aspx?TabIndex=4&TabId=153")
        .data("__EVENTTARGET", "")
        .data("__EVENTARGUMENT", "")
        .data("__VIEWSTATE", resource.parse().getElementById("__VIEWSTATE").val())
        .data("__VIEWSTATEGENERATOR", resource.parse().getElementById("__VIEWSTATEGENERATOR").val())
        .data("ctl00$Desktopthreepanes1$ThreePanes$ctl13$VehicleType", "C")
        .data("ctl00$Desktopthreepanes1$ThreePanes$ctl13$CarNo", "AB-5678")
                .data("ctl00$Desktopthreepanes1$ThreePanes$ctl13$OkButton", "")
        .referrer("https://ebill.ba.org.tw/CPP//DesktopDefault.aspx?TabIndex=4&TabId=153")
        .header("Cache-Control","no-cache")
        .header("Host", "ebill.ba.org.tw")
        .header("Origin", "https://ebill.ba.org.tw")
        .header("Upgrade-Insecure-Requests", "1")
        .header("Content-Type", "application/x-www-form-urlencoded")
        .cookie("IsPassClientEnvironDetection", "true")
        .cookie("IsPassMobileClientEnvironDetection","true")
        .cookie("c","1450682673891")
        .followRedirects(true)
        .userAgent("Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36")
        .cookies(resource.cookies())
        .timeout(Define.WEBTIMEOUT)
        .post();

但是我得到的只是默认查询页面 我搜索了每一个可能的答案,我不认为这个结果来自JavaScript的cookie,我设置了userAgent .....我错过了什么?

1 个答案:

答案 0 :(得分:1)

我弄清楚出了什么问题。

我尝试分析每个帖子的内容长度,Chrome中的值为~1100,但我的jsoup只有~500。

在追踪之后,我发现_VIEWSTATE的val长度应该是700+,但在jsoup中总是200 ...

最后,我发现cookie应该在[GET]阶段设置,否则这个网站会给你一个错误的__VIEWSTATE值。

    Connection.Response resource = Jsoup.connect("https://ebill.ba.org.tw/CPP//DesktopDefault.aspx?TabIndex=4&TabId=153")
        .timeout(Define.WEBTIMEOUT)
        .method(Connection.Method.GET)
        .execute();

应该是......

    Connection.Response resource = Jsoup.connect("https://ebill.ba.org.tw/CPP//DesktopDefault.aspx?TabIndex=4&TabId=153")
        .cookie("IsPassClientEnvironDetection", "true")
        .cookie("IsPassMobileClientEnvironDetection", "true")
        .timeout(Define.WEBTIMEOUT)
        .method(Connection.Method.GET)
        .execute();