• Post Reply Bookmark Topic Watch Topic
  • New Topic

HttpUrlConnection redirection to other servlet is not happening

 
majji naidu
Greenhorn
Posts: 5
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I have the following code which will call the server through HttpUrlConnection.



1)


String response = HttpUtil.submitRequest(json.toJSONString(), "http://ipaddr:port/SessionMgr/validateSession?sessionId=_78998348uthjae3a&showLoginPage=true");

The above lines will call the following code:

2)

public static String submitRequest(String request, String **requestUrl**) {
try {
URL url = new URL(requestUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
OutputStream os = conn.getOutputStream();
os.write(request.getBytes());
os.flush();
if (conn.getResponseCode() != HttpURLConnection.HTTP_OK) {
throw new RuntimeException("Failed : HTTP error code : "
+ conn.getResponseCode());
}

BufferedReader br = new BufferedReader(new InputStreamReader(
(conn.getInputStream())));
String output;
StringBuffer sb = new StringBuffer();
while ((output = br.readLine()) != null) {
sb.append(output);
}
conn.disconnect();
return sb.toString();

} catch (MalformedURLException e) {
} catch (IOException e) {
}
return "";
}

The "requestUrl" will go to the servlet below:

3)
public class ValidateSessionServlet extends HttpServlet {
String session = req.getParameter(sessionId);
if (session == null) {
// redirect to servlet which will display login page.
response.setContentType("text/html");
String actionUrl = getIpPortUrl(request)
+ PropertyConfig.getInstance().getFromIdPConfig(globalStrings.getCheckSSOSession());
out.write("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\"> \n");
out.write("<html><head><body onload=\"document.forms[0].submit()\">\n");
out.write("<form method=\"POST\" action=\"" + actionUrl + "\">\n");
out.write("<input type=\"hidden\" name=\"locale\" value=\"" + locale + "\"/>\n");
out.write("<input type=\"hidden\" name=\"Sessionrequest\" value=\"" + true + "\"/>\n");
out.write("</form>\n</body>\n</html>\n");
}
}


In the above code the form should go to the servlet as mentioned in the actionUrl, but it is again going to servlet which is in step(1).

1) May i know can we make this above html form in step(3) to submitted and redirect to the servlet in **actionUrl**.

As per the above code i am summarizing the requirement. If the session is null, I have to redirect the user to login page and validated against database and then the response should go to step(1), Is it possible?
 
Arun Kumarr
Ranch Hand
Posts: 662
Eclipse IDE Java Spring
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Have you tried using request dispatcher, tried forwarding a request, tried redirecting a request?
 
majji naidu
Greenhorn
Posts: 5
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Yes i tried it with "Requestdispatcher", "sendRedirect", but it does not work. I don't know whether the redirection is possible or not.
 
Arun Kumarr
Ranch Hand
Posts: 662
Eclipse IDE Java Spring
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Can you post the code which you have used for sendRedirect?
 
Dave Tolls
Ranch Hand
Posts: 2284
25
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
What exactly are you expecting to see?
The only thing I can see from the posted code (which would be easier to follow if you wrapped it in code tags) is you hit the ValidateSessionServlet (presumably, as the supplied code is missing a lot of stuff) which simply returns some HTML.

What are you expecting to happen?
 
Arun Kumarr
Ranch Hand
Posts: 662
Eclipse IDE Java Spring
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
To add to it, move the html to a separate file and redirect your response to the html file.
 
majji naidu
Greenhorn
Posts: 5
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
send redirect response code:
response.sendRedirect("/actionUrl");

for request dispatcher:

RequestDispatcher dispatcher = request.getRequestDispatcher("/validateform.jsp");
dispatcher.forward(req,resp);

My expectation is:
control should go to the next path which is specified in actionUrl but it goes back to the from where the request got initialized.

Is it possible to do like that(as per my expectation)
 
Arun Kumarr
Ranch Hand
Posts: 662
Eclipse IDE Java Spring
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Are you using both or only one? Please comment out the request forwarding related code.
For now, just use response.sendRedirect("https://www.google.co.uk/");
Can you check what happens now?
 
William Brogden
Author and all-around good cowpoke
Rancher
Posts: 13078
6
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator


Really? Discarding any information in the exceptions?
 
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!