老紫竹提高教程 - Java代理服务器和NTLM认证的使用

机器在局域网里面,使用了NTLM的认证,不能直接访问外网,本机也没有安装 ISA 的Client
这个代码包含了2部分
1 如果你使用代理服务器,那么只需要设置Properties部分就行了
2 如果你使用NTML,那么用那个Authenticator 就可以了。

import java.net.Authenticator; import java.net.PasswordAuthentication; import java.util.Properties; /** * 老紫竹提高教程 - Java代理服务器的使用和NTLM认证的使用。 * * @author JAVA世纪网(java2000.net, laozizhu.com) */ publi public class NTLM{ public static void init() { Authenticator.setDefault(new DefaultAuthenticator()); Properties prop = System.getProperties(); prop.put("proxySet", "true"); // 设置http访问要使用的代理服务器的地址 prop.setProperty("http.proxyHost", "192.168.0.4"); // 设置http访问要使用的代理服务器的端口 prop.setProperty("http.proxyPort", "8080"); } } class DefaultAuthenticator extends Authenticator { private static String username = "username"; private static String domain = "domainName"; private static String password = "password"; @Override public PasswordAuthentication getPasswordAuthentication() { String usernamewithdomain = domain + "//" + username; // 这里使用/而不是/ return (new PasswordAuthentication(usernamewithdomain, password.toCharArray())); } }

3 如果使用 URLConnection 连接,每次使用的代理可能不同,那么需要借助JDK自带的 Proxy来单独设置

Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(("host"), 8888)); URL url = new URL("http://www.java2000.net"); HttpURLConnection con = (HttpURLConnection) url.openConnection(proxy));

指定代理的服务器和端口就可以直接连接了。


总结:
1 如果所有连接使用统一的代理,那么在系统属性里设置
2 如果某个连接使用特定的代理,那么在连接里单独的设置
3 NTLM认证,在域用户没有安装 ISA Client的时候使用


你可能感兴趣的:(java,properties,String,服务器,Class,domain)