【问题标题】:Query train arrivals/departures from https://enquiry.indianrail.gov.in/mntes从 https://enquiry.indianrail.gov.in/mntes 查询火车到达/出发
【发布时间】:2021-10-26 04:25:10
【问题描述】:

我正在尝试通过使用 url(POST 方法)传递列车号和其他所需参数(从 web 开发人员工具-firefox 获得)来获取列车的停靠站(车站)列表,但我得到 404-page not found错误代码。当我尝试使用 POSTMAN 时,它会获取包含请求数据的网页,代码有什么问题?

        Document doc= Jsoup.connect("https://enquiry.indianrail.gov.in/mntes/q?")
                .data("opt","TrainRunning")
                .data("subOpt","FindStationList")
                .data("trainNo",trainNumber)
                .data("jStation","")
                .data("jDate","25-Aug-2021")
                .data("jDateDay","Wed")
                .userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0")
                .referrer("https://enquiry.indianrail.gov.in/mntes/")
                .ignoreHttpErrors(true)
                .post();
        System.out.println(doc.text());

提前谢谢你

【问题讨论】:

  • 我认为您缺少 cookie 的东西...当您第一次访问主页时,服务器会向您发送 cookie。当您发送发布请求时,您必须将这些 cookie 与请求一起发送。使用开发者工具检查浏览器的网络流量。

标签: java jsoup


【解决方案1】:

我尝试让请求与 Jsoup 一起工作,但无济于事。正在使用一种发送表单数据的奇怪方式。表单数据在 POST 请求中作为 URL 查询参数传递。

Jsoup 使用一个简化的 HTTP API,其中没有预见到这种特殊用例。 debatable 是否适合按照https://enquiry.indianrail.gov.in/mntes 期望的方式发送表单参数。

如果您使用的是 Java 11 或更高版本,则可以通过现代 Java HTTP 客户端 简单地获取 POST 请求的响应。它完全支持 HTTP 协议。然后您可以将返回的String 输入到 Jsoup 中。

你可以这样做:

// 1. Get the response
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://enquiry.indianrail.gov.in/mntes/q?opt=TrainRunning&subOpt=ShowRunC&trainNo=07482&jDate=25-Aug-2021&jDateDay=Wed&jStation=DVD%23false"))
    .POST(BodyPublishers.noBody())
    .build();
HttpResponse<String> response =
    client.send(request, BodyHandlers.ofString());

// 2. Parse the response via Jsoup
Document doc = Jsoup.parse(response.body());
System.out.println(doc.text());

我只是从 Postman 复制粘贴了正确的 URL。您可能希望以更健壮的方式构建查询字符串。见:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-31
    • 1970-01-01
    • 2014-10-19
    • 2022-01-12
    • 2022-09-30
    • 2015-08-16
    • 2020-01-17
    相关资源
    最近更新 更多