使用response.sendRedirect方法在java中发送Post请求

我想在java中发送一个post请求。 我已经看到了使用Http Client发布请求的示例。 但我想使用sendRedirect方法。

例如, https://processthis.com/process?name = xyz&phone = 9898989898

我想使用post请求发送这些参数。 因此,任何人都不会看到这些参数,同时我需要将我的url重定向到该url,因为

response.sendRedirect("https://processthis.com/process"); 

根据带有HTTP / 1.1的RFC2616,您可以发送307响应代码,这将使用户代理重复它对提供主机的POST请求。 在你的情况下,只是做

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

响应是您的HttpServletResponse对象。

希望这可以帮助。

当浏览器收到HTTP重定向代码时,它将始终按标准执行给定URL的GET或HEAD。 这就是必须通过查询字符串发送数据的原因。 如果要通过POST模拟重定向,可以向客户端发送包含所需信息的表单,并在页面加载事件中使用Javascript自动提交表单(通常用于SAML使用的不同服务器之间的通信)例如协议)。 这是一个例子:

 

附注:如果您的服务器中已有信息,为什么要发送重定向而不是执行给定的操作? 也许你想实现POST / REDIRECT / GET模式 ?

我不认为这是可能的。 为什么不使用RequestDispatcher。 这对你有用。 只需在请求中设置参数即可

 request.setAttribute("message", "Hello test"); RequestDispatcher dispatcher = servletContext().getRequestDispatcher(url); 

或 – HTTP规范声明所有重定向必须采用GET(或HEAD)的forms。 如果安全性存在问题,您可以考虑加密查询字符串参数。

或者 – 另一个选项,如果你有会话,在servlet中设置会话中的参数。 然后在重定向到所需页面后从会话中获取它。