java - 重定向和 POST 方法

标签 java servlets

如何 POST 方法并将参数重定向到链接 Í 有这种可能吗?

link = http://92.42.51.91/CGGateway/Default.aspx

我目前发送信息没有问题 但我无法重定向

当我正确发送信息后,我可以使用该链接

    URL url = new URL("http://62.68.645.32/Default.aspx");
    Map<String, Object> params = new LinkedHashMap<String, Object>();
    params.put("Timestamp", Timestamp);
    params.put("Callback", "google.com");
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    conn.setRequestMethod("POST");

    resp.sendRedirect(Link);

最佳答案

通常,当人们说“重定向”时,他们指的是 HTTP 代码 302 重定向。 http 客户端中 302 代码的许多实现仅使用 GET 进行重定向,而不管原始请求方法如何,因此使用此代码“重定向”到 POST 端点并不可靠。

解决这个问题的一个简单方法是使用 self 发布表单:

<form name="autoform" action="..." method="POST">
    <input type="hidden" name="param1" value="value1">
    <input type="hidden" name="param2" value="value2">
    ...
</form>

并使其在用户浏览器中自动提交:

<script type="text/javascript">
    document.autoform.submit();
</script>

另一种方法是使用代码 307,它必须保留原始的 HTTP 方法:

response.setHeader("Location", response.encodeRedirectURL(url));
response.setStatus(HttpServletResponse.SC_TEMPORARY_REDIRECT);

在这种情况下,您将无法控制浏览器发送到该 url 的确切参数;相反,浏览器将自动发送与发送到您的重定向 URL 相同的参数。

关于java - 重定向和 POST 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47077066/

相关文章:

java - 如何从 servlet 访问 www 目录中的文件?

java - 通过 Java 以编程方式设置 "hbase.server.keyvalue.maxsize"

java - 列表默认容量是多少?列表可以存储多少个元素?

java - Java 中的服务器 session 管理

java - JSP、GET 和 POST 参数

java - 如何将InputStream对象转换为File对象?

java - 连续运行编程

java - Git 或外部项目中的属性文件?

java - 关闭 SAXParserFactory 的验证

java - 查询字符串未检索 servlet 页面中的值