Spring, redirect to external url using POST
29,637
Solution 1
Like @stepanian said, you can't redirect with POST. But there are few workarounds:
- Do a simple HttpUrlConnection and use POST. After output the response stream. It works, but I had some problem with CSS.
- Do stuff in your controller and after redirect the result data to a fake page. This page will do automatically the POST through javascript with no user interaction (more details):
html:
<form name="myRedirectForm" action="https://processthis.com/process" method="post">
<input name="name" type="hidden" value="xyz" />
<input name="phone" type="hidden" value="9898989898" />
<noscript>
<input type="submit" value="Click here to continue" />
</noscript>
</form>
<script type="text/javascript">
$(document).ready(function() {
document.myRedirectForm.submit();
});
</script>
Solution 2
You can't redirect with POST. You can send a POST request using Java code with a class like HttpURLConnection within the action.
Author by
Accollativo
public boolean thisIsMe() { return !thisIsMe(); }
Updated on December 19, 2020Comments
-
Accollativo over 3 years
In the following Spring 3.1 action, I've to do some stuff and add attribute to a POST request, and then redirect it to external URL through POST (I can't use GET).
@RequestMapping(value = "/selectCUAA", method = RequestMethod.POST) public ModelAndView selectCUAA(@RequestParam(value="userID", required=true) String cuaa, ModelMap model) { //query & other... model.addAttribute(PARAM_NAME_USER, cuaa); model.addAttribute(... , ...); return new ModelAndView("redirect:http://www.externalURL.com/", model); }
But with this code the GET method is used (the attributes are appended to http://www.externalURL.com/). How can I use the POST method? It's mandatory from the external URL.
-
Accollativo about 8 yearsOk, thanks, I used this example: stackoverflow.com/questions/3324717/… my Spring controller selectCUAA what should return now? I need a redirect to the new web page.
-
stepanian about 8 yearsYou can redirect after the code-envoked POST is completed.
-
Accollativo about 8 yearsRedirect with no attribute? In this way is it like calling a post and after a get, so the result will be only the last get? (the new url is a login page that need the parameter on post). However thanks, monday I will give a try
-
stepanian about 8 yearsYou can get the response from the post and return it to the user in the get response.
-
Accollativo about 8 yearsI gave a look on the internet, but I become more confused. Could you show me an example modifying my selectCUAA controller?
-
Phillip Fleischer about 5 yearshere's another example that backs this up, i liked this util class github.com/keycloak/keycloak/blob/…