我有像localhost:7001 / MyServlet这样的页面。我正在制作一个来自下面的
的http连接请求String url = "http://localhost:7001/MyServlet"
PostMethod method = new PostMethod(url);
HttpClient client = new HttpClient();
但是“MyServlet”受j_security_check保护。因此,当我建立连接时,会被重定向到登录页面。
如何在一个HttpConnection
中进行身份验证并访问我的网址注意:我使用apache常见的httpclient
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.PostMethod;
答案 0 :(得分:0)
我怀疑您可以在单个请求中登录和调用服务器,除非启用了HTTP BASIC身份验证。虽然我还不知道HTTPClient API的细节,但基本上你需要使用cookie跟踪会话;将您的登录信息发布到/j_security_check
;然后访问servlet。 (如果使用ACEGI Security,则相同的基本过程适用于/j_acegi_security_check
。)
Tomcat中令人讨厌的皱纹是,只需立即发布到/j_security_check
就会发出400“错误请求”;它的身份验证器对于状态转换非常挑剔,显然不是为编程客户而设计的。您需要先访问/loginEntry
(您可以丢弃除会话cookie之外的响应); 然后将您的登录信息发布到/j_security_check
; 然后按照生成的重定向(我认为回到/loginEntry
),这将实际存储您的新登录信息; 终于发布到所需的servlet! NetBeans #5c3cb7fb60fe显示了使用Tomcat容器身份验证登录Hudson服务器的操作。