1

我们有文档列表的 URL,我们想检查用户是否有权访问这些文档。这些文件需要用户登录名和密码才能访问。由于服务器需要 NTLM 身份验证,我们使用 JCIFS API 与文档建立 URL 连接并检查 HTTP 响应代码。如果响应代码是 401,那么我们确认用户没有访问权限。使用这种方法,文档是否会下载所有内容?响应时间是否因文档大小而异?有更好的方法吗?提前致谢。

Config.setProperty("jcifs.smb.client.username", "<user_name>"); 
Config.setProperty("jcifs.smb.client.password", "<password>");  
URL spURL = new URL("http://<host_name>/<folder_name>/<file_name>";
HttpURLConnection httpURLConnection = (HttpURLConnection) spURL
        .openConnection();
NtlmHttpURLConnection ntlmHttpURLConnection = new NtlmHttpURLConnection(
                httpURLConnection);
int resCode = ntlmHttpURLConnection.getResponseCode()

感谢您的回答。我没有下载文档的要求,但我的要求只是检查用户是否有权访问文档。我正在寻找一种响应速度更快且不会因文档大小而异的解决方案。

您好,感谢您将请求类型设置为 HEAD 的建议。有很多以 2、3、4 和 5 开头的 HTTP 响应代码。你能解释一下我该如何解释吗?我假设以下解释;如果我错了,请纠正我。

  1. 任何以 2 开头的响应代码都意味着用户可以访问该文档。
  2. 任何以 3 开头的响应代码,我需要添加更多逻辑以向实际 URL 发出另一个请求?是否有代码如何自动完成?
  3. 任何带有 401 的响应代码表示用户无权访问。
  4. 任何以 5 开头的响应代码都表示主机服务器存在问题。
4

2 回答 2

0

怎么样

httpURLConnection.setRequestMethod("HEAD");

?

于 2009-10-20T17:31:41.443 回答
0

当您下载时,实际上并没有任何开销。如果您未获得授权,则服务器不会将文件发回。

如果您要发布大量数据,您应该使用 100-Continue 以确保在继续之前允许您这样做。你可以这样做,

httpURLConnection.setRequestProperty("Expect", "100-continue");
于 2009-10-20T17:42:01.017 回答