для низкоуровневых развлечений я предложил бы Michael Abrash
i) - Дзэн Оптимизации кода - и
ii) - Графика, Программируя Черный список -
, даже если Вы не делаете никакого графического программирования.
Согласно этой странице , вы можете использовать встроенные классы JRE с оговоркой, что более ранние версии Java могут делать это только на компьютер с Windows.
Однако, если вы хотите жить со сторонней зависимостью, вам подойдет IMO Apache Commons HttpClient 3.x . Здесь - документация по использованию аутентификации, включая NTLM. В общем, HttpClient - гораздо более функциональная библиотека.
Последняя версия HttpClient - 4.0, но очевидно, что эта версия не поддерживает NTLM , эта версия требует немного дополнительных работа .
Вот как я думаю код будет выглядеть, хотя я не пробовал:
HttpClient httpClient = new HttpClient();
httpClient.getState().setCredentials(AuthScope.ANY, new NTCredentials(user, password, hostPortionOfURL, domain));
GetMethod request = new GetMethod(url);
BufferedReader reader = new InputStreamReader(request.getResponseBodyAsStream());
Удачи.
Взгляните на класс SpnegoHttpURLConnection в проекте SPNEGO HTTP Servlet Filter. В этом проекте также есть несколько примеров.
В этом проекте есть клиентская библиотека , которая в значительной степени делает то, что вы делаете в вашем примере.
Взгляните на этот пример из javadoc ...
public static void main(final String[] args) throws Exception {
final String creds = "dfelix:myp@s5";
final String token = Base64.encode(creds.getBytes());
URL url = new URL("http://medusa:8080/index.jsp");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestProperty(Constants.AUTHZ_HEADER
, Constants.BASIC_HEADER + " " + token);
conn.connect();
System.out.println("Response Code:" + conn.getResponseCode());
}