[jcifs] Verifying URL's in a domain.
Jessie Horton
hortonjw at verizon.net
Tue Sep 4 20:59:00 GMT 2007
Hi,
I need to verify if certain URL's exists. I am currently using jcifs to help me handle the task. As a test I have slightly modified the NtlmHttpClient sample file provided by the jcifs.samba.org site as seen below. Anytime I run the code on a UNIX server I get the following error:
Exception in thread "main" java.lang.RuntimeException: java.lang.NullPointerException
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:904)
at jcifs.http.NtlmHttpURLConnection.getInputStream(NtlmHttpURLConnection.java:242)
at java.net.URL.openStream(URL.java:1007)
at NtlmHttpClient.main(NtlmHttpClient.java:43)
Caused by: java.lang.NullPointerException
at sun.net.www.protocol.http.NTLMAuthentication.init(NTLMAuthentication.java:138)
at sun.net.www.protocol.http.NTLMAuthentication.<init>(NTLMAuthentication.java:133)
at sun.net.www.protocol.http.HttpURLConnection.getServerAuthentication(HttpURLConnection.java:1582)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1035)
at sun.net.www.protocol.http.HttpURLConnection.getHeaderField(HttpURLConnection.java:1941)
at jcifs.http.NtlmHttpURLConnection.parseResponseCode(NtlmHttpURLConnection.java:424)
at jcifs.http.NtlmHttpURLConnection.doHandshake(NtlmHttpURLConnection.java:436)
at jcifs.http.NtlmHttpURLConnection.handshake(NtlmHttpURLConnection.java:103)
at jcifs.http.NtlmHttpURLConnection.getInputStream(NtlmHttpURLConnection.java:240)
... 2 more
I have been able to determine that the error is generated cause the user credentials were not passed correctly. When I run the same code on a PC it works because my Windows credentials are passed transparently. The credentials in the java code are completely over-looked. I do know the credentials I am passing are correct because I use the same credentials to verify some smb:// links as well in a different java program using jcifs. I also know the url is correct because if I paste it into firefox a user authentication window will popup and once I type in the following credentials :
username: some.domain.com\username
password: P at ssw0rd
The file will prompt to be saved or opened.
Could someone please take a look at the code and tell me if I am missing something or doing something wrong?
import java.io.*;
import java.net.*;
import jcifs.*;
public class NtlmHttpClient {
public static void main(String[] args) throws Exception {
Config.registerSmbURLHandler();
Config.setProperty("jcifs.smb.client.domain", "some.domain.com");
Config.setProperty("jcifs.smb.client.username", "username");
Config.setProperty("jcifs.smb.client.password", "P at ssw0rd");
try {
Config.setProperty("jcifs.netbios.hostname",
Config.getProperty("jcifs.netbios.hostname",
InetAddress.getLocalHost().getHostName()));
} catch (Exception ex) { }
URL url = new URL("http://portal/ISO/Department/test/Metrics/1234_METRIC_Mar07.xls");
//URL url = new URL("http://some.domain.com%5Cusername:P%40ssw0rd@portal/ISO/Department/test/Metrics/1234_METRIC_Mar07.xls");
BufferedReader reader = new BufferedReader(
new InputStreamReader(url.openStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
}
}
Jessie
-------------- next part --------------
HTML attachment scrubbed and removed
More information about the jcifs
mailing list