检查用户是否可以使用URLConnection访问文档

时间:2009-10-20 17:09:18

标签: httpurlconnection

我们有一个文档列表的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的建议。有很多HTTP响应代码以2,3,4和5开头。你能解释一下我如何解释这个吗?我假设以下解释;如果我错了,请纠正我。

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

2 个答案:

答案 0 :(得分:0)

怎么样

httpURLConnection.setRequestMethod("HEAD");

答案 1 :(得分:0)

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

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

httpURLConnection.setRequestProperty("Expect", "100-continue");