【问题标题】:Programmatically POST to ASP type WEBPAGE以编程方式 POST 到 ASP 类型的 WEBPAGE
【发布时间】:2011-07-21 16:20:58
【问题描述】:

到目前为止,我已经在 HttpURLConnection 和 setRequestProperty 上辛苦了 2 天,但我无法让这个网页发布并返回我想要的页面。这就是我目前所拥有的......

... 字符串数据 = URLEncoder.encode("acctno", "UTF-8") + "=" + URLEncoder.encode("1991462", "UTF-8");

    URL oracle = new URL("http://taxinquiry.princegeorgescountymd.gov");
    HttpURLConnection yc = (HttpURLConnection) oracle.openConnection();
    yc.setRequestMethod("POST");

    yc.setRequestProperty("Content-Type", "text/html; charset=utf-8");
    yc.setRequestProperty("Content-Length", "19004");
    yc.setRequestProperty("Cache-Control", "private");
    yc.setRequestProperty("Set-Cookie", "ASP.NET_SessionId=v5rdm145zv3jm545kdslgz55; path=/");
    yc.setRequestProperty("X-AspNet-Version", "1.1.4322");
    yc.setRequestProperty("X-Powered-By", "ASP.NET");
    yc.setRequestProperty("Server", "Microsoft-IIS/6.0");

    yc.setDoOutput(true);
    yc.setDoInput(true);

    OutputStreamWriter out = new OutputStreamWriter(yc.getOutputStream());

    out.write(data);
    out.flush();
    //out.write(data);
    out.close();
    ...

它返回 URL 中定义的相同页面。它没有向我发送应以 /taxsummary.aspx 结尾的请求页面

看起来 asp 获取了 post 数据并为给定的每个参数生成一个唯一的 HTML。如何给它正确的参数?

【问题讨论】:

    标签: asp.net parameters request


    【解决方案1】:

    您的代码看起来不错。我相信它可以正确发送 POST。我认为问题不在这里。当您使用浏览器时,您首先执行至少一个 HTTP GET 以到达表单。当您这样做时,服务器会为您创建 HTTP 会话并在响应标头 Set-Cookie 中返回其 ID。当您使用浏览器提交表单时,它会将此标头(Cookie)发回,以便服务器可以识别会话。

    当您使用 java 工作时,您将跳过第一阶段(HTTP GET)。因此,您要做的第一件事是在您还没有会话时进行 POST。我不知道这个 ASP 页面的逻辑是什么,但我认为它只是拒绝了这样的请求。

    所以,首先检查这个猜测。您可以使用名为 LiveHttpHeaders 的 Firefox 插件。安装它并手动执行操作。您将看到所有 HTTP 请求和响应。拯救他们。检查会话 ID 是否从服务器发送回客户端。现在在java中实现完全相同。

    顺便说一句,当服务器发送多个重定向响应时,情况通常会更加复杂。在这种情况下,您必须遵循它们。 HttpConnection 有方法 setFollowRedirects()。使用参数 true 调用它。

    BTW2:Apache HttpClient 是 HttpConnection 的完美替代品。它可以做所有事情,并且在您执行此类任务时非常推荐。

    就是这样。祝你好运。有时候也不容易……

    【讨论】:

    • 好的,更新了代码。现在它说在读取输入后无法写入输出。我该如何绕过这个?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-21
    • 1970-01-01
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多