网络代理

来源:互联网 发布:通过mac地址监控手机 编辑:程序博客网 时间:2024/06/03 22:59

代理有助于减少安全性的外部威胁,同时还允许内部用户访问因特网服务

有两种代理实现方式

一、设置系统属性

通过设置系统属性(System.setPropery(String key, String value)的方式,这种方式会影响所有的请求,

可用的网络代理属性,请参照

http://docs.oracle.com/javase/7/docs/api/java/net/doc-files/net-properties.html

1、设置代理

System.setProperty("java.net.useSystemProxies", "true");// HTTP代理System.setProperty("http.proxyHost", proxyHost);System.setProperty("http.proxyPort", proxyPort + "");// HTTPS代理System.setProperty("https.proxyHost", proxyHost);System.setProperty("https.proxyPort", proxyPort + "");
2、获取代理

/** * 获取代理 *  * @param url * @return */private static Proxy getSystemProxy(String url) {Proxy proxy = null;try {ProxySelector ps = ProxySelector.getDefault();List<Proxy> proxyList = ps.select(new URI(url));if (null != proxyList && !proxyList.isEmpty()) {proxy = proxyList.get(0);}} catch (Exception e) {e.printStackTrace();}return proxy;}

二、java.net.Proxy

本方式只对当前请求起作用

InetSocketAddress inetAddress= new InetSocketAddress(proxyHost,proxyPort);//创建代理Proxy proxy = new Proxy(Proxy.Type.HTTP,inetAddress);//设置代理URL url = new URL(urlStr);HttpURLConnection conn = (HttpURLConnection) url.openConnection(proxy);

三、代理认证

有些代理在授权用户访问因特网之前,要求用户输入用户名和口令。如果您使用位于防火墙之内的Web浏览器,
您就可能碰到过这种情况。以下是执行认证的方法:

1、Authenticator

Authenticator.setDefault(new Authenticator() {@Overrideprotected PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication(username,password);}});

这种方式是全局的,对所有请求生效。


2、设置请求消息头

String auth="username:password"; String encodedAuth=base64Encode(auth); String header="Proxy-Authorization: basic "+encodedAuth;
只对当前请求生效。




0 0
原创粉丝点击