2

我有像 localhost:7001/MyServlet 这样的页面。我正在从下面发出一个 http 连接请求

String url = "http://localhost:7001/MyServlet"
PostMethod method = new PostMethod(url); 
HttpClient client = new HttpClient();

但是“MyServlet”受 j_security_check 保护。因此,当我建立连接时,会被重定向到登录页面。

如何在一个 HttpConnection 中获得身份验证并访问我的 url

注:我用的是apache常用的httpclient

import org.apache.commons.httpclient.HttpClient; 
import org.apache.commons.httpclient.methods.PostMethod;
4

1 回答 1

0

我怀疑您是否可以在单个请求中登录并调用服务器,除非启用了 HTTP BASIC 身份验证。虽然我还不知道 HTTPClient 的 API 的细节,但基本上你需要使用 cookie 来跟踪会话;将您的登录信息发布到/j_security_check;然后访问 servlet。/j_acegi_security_check(如果使用 ACEGI Security ,同样的基本过程也适用。)

Tomcat 中的一个令人讨厌的问题是,立即发布就会/j_security_check给出 400 个“错误请求”;它的身份验证器对状态转换相当挑剔,显然在设计时并未考虑到程序化客户端。您需要先访问/loginEntry(您可以丢弃会话cookie以外的响应);然后将您的登录信息发布到/j_security_check然后按照生成的重定向(/loginEntry我认为返回),它将实际存储您的新登录信息;最后发布到所需的 servlet!NetBeans #5c3cb7fb60fe展示了使用 Tomcat 的容器身份验证登录到 Hudson 服务器的实际操作。

于 2012-05-04T15:50:49.773 回答