如何重定向到接受帖子请求的网页?

时间:2015-07-04 03:29:39

标签: html jsp jsoup

我正在开发一个项目,我需要在JSOUP中废弃数据并在我的网页中显示为HTML,并且点击查看更多我转发到报废的网址,问题是GET网址工作正常但是POST请求aspx没有工作,因为它期望一些 __ EVENTVALIDATION 等,...作为表单输入。 该网页为kepler.sos.ca.gov,如果您点击公司名称然后输入ESCROW,然后提交,将会出现一些结果,我可以在JSOUP中进行,但无法使用javascript:__doPostBack('ctl00$content_placeholder_body$SearchResults1$GridView_SearchResults_Corp','DetailCorp$0').重定向

请建议。

2 个答案:

答案 0 :(得分:1)

JSoup不是浏览器。它不解释JavaScript,您无法通过JavaScript链接触发POST请求。

然而,JSoup非常有能力做POST请求。要在此处使用JSoup,您需要弄清楚JavaScript是如何构建实际请求的。然后,您可以运行用Java编码的相同算法并创建链接并执行POST请求。

实现您想要的更简单的方法可能是技术转换。例如,您可以使用selenium,这样可以实现远程控制"一个真正的浏览器,运行该页面的JavaScript应该没有问题。

答案 1 :(得分:1)

这里有一个答案:unable to get results from jsoup while giving post request

`Connection.Response response = Jsoup.connect(url)                     。方法(Connection.Method.GET)                     .execute();

        Document responseDocument = response.parse();
        Map<String, String> loginCookies = response.cookies();


        Element eventValidation = responseDocument.select("input[name=__EVENTVALIDATION]").first();
        String validationKey = eventValidation.attr("value");

        Element viewState = responseDocument.select("input[name=__VIEWSTATE]").first();
        String viewStateKey = viewState.attr("value");

        response = Jsoup.connect(url)
                .cookies(loginCookies)
                .data("__EVENTTARGET", "")
                .data("__EVENTARGUMENT", "")
                .data("__LASTFOCUS", "")
                .data("__VIEWSTATE", viewStateKey)
                .data("__VIEWSTATEENCRYPTED", "")
                .data("__EVENTVALIDATION", validationKey)
                .data("ctl00$content_placeholder_body$BusinessSearch1$TextBox_NameSearch", "aaa")  // <- search
                .data("ctl00$content_placeholder_body$BusinessSearch1$RadioButtonList_SearchType", "Corporation Name")
                .data("ctl00$content_placeholder_body$BusinessSearch1$Button_Search", "Search")

                .method(Connection.Method.POST)
                .followRedirects(true)
                .execute();
        Document document = response.parse(); //search results
        System.out.println(document);`