无法弄清楚如何从带有用户名/密码的JSP发送HTTP POST请求

时间:2017-06-02 16:19:17

标签: java jsp http authentication http-post

我整个星期一直在撞击这个星期,我终于离开工作的POC一步之遥。对此有任何帮助表示赞赏,并希望所有人都能在周五享受快乐。

我的目标是创建一个JSP:

- 通过HTTP POST

向Guidewire Servlet发送预定的硬编码用户名/密码

- servlet进行身份验证,将用户登录,并将其重定向到trainingApp登录页面

- 没有任何用户输入,只需运行它,你就会登陆已经登录的Guidewire。

我已经开始工作了!但是,它不符合规范。我的一个要求是JSP在运行时自动执行所有这些操作。这意味着每次都发送相同的用户名/密码组合,无需用户输入。

我只能将JSP作为用户名/密码表单使用'提交'按钮。像这样:

<body>

<%@page import="java.io.*" %>
<%@page import="java.net.*" %>

    <form method="post" action="http://localhost:8180/pc/service/test">
        User:<input name="username"/>
        Password:<input name="password"/>
        <input type="Submit" value="Log in"/>
    </form>

  </body> 
</html>

这确实发送了用户名/密码,但是我需要更多类似的东西,并尝试我可以让它无法正常工作。

<% 
URLConnection connection = new URL("http://localhost:8180/pc/service/test").openConnection();
connection.setDoOutput(true); // Triggers POST.
connection.setRequestProperty("Authorization", "Basic c3U6Z3c=");
%>

我似乎无法启动POST请求并在没有&#34;提交&#34;的情况下发送身份验证数据。按钮或传递用户名和密码的表单。 servlet似乎工作正常,我几乎已经完成了解脱。

如果您能提供帮助,请提前致谢!

3 个答案:

答案 0 :(得分:0)

您可以在JSP中使用隐式对象,即请求。

String name = request.getParamater("username");

使用该名称,我们可以重定向到表单或指定的URL。

答案 1 :(得分:0)

你不需要表格。只需重定向并传递授权标题。

您也可以进行摘要,如果此网址不是https

,则可能更安全

String headerKey =&#34;授权&#34 ;;

String headerValue =&#34; Basic + Base64.encodeString(user +&#34;:&#34; + pass);

response.setHeader(headerKey,headerValue);

String redirectURL =&#34; http://whatever.com/myJSPFile.jsp&#34;;

response.sendRedirect是(的redirectUrl);

答案 2 :(得分:0)

解决了!

我仍在使用表格,但是:

输入现在隐藏了,这是关键: 我在主体上添加了一个onload标签,以便在页面加载时提交表单!

按计划工作。