proxySet true
proxyHost xxxxx
proxyPort xxx
//如果代理需要验证,在http头中加入 "Basic " + "代理服务器用户名:密码"的Base64编码;
connection.setRequestProperty("Proxy-Authorization",
"Basic " + Encoder.base64Encode(user+":" + password));
Properties prop = System.getProperties();
// HTTP代理的IP设置
prop.setProperty("http.proxyHost", "10.28.0.254");
// HTTP代理的端口设置
prop.setProperty("http.proxyPort", "80");
//这里也可以设置不需要使用代理的地址
prop.setProperty("http.nonProxyHosts", "localhost|10.28.0.*");
//设置HTTPS安全访问的代理服务器地址与端口
prop.setProperty("https.proxyHost", "10.28.0.254");
prop.setProperty("https.proxyPort", "443");
//对于安全访问的过滤地址属性同样是http.nonProxyHosts并没有https.nonProxyHosts
//FTP的代理设置入下
prop.setProperty("ftp.proxyHost", "192.168.0.254");
prop.setProperty("ftp.proxyPort", "2121");
prop.setProperty("ftp.nonProxyHosts", "localhost|192.168.0.*");
//SOCKS的代理设置
prop.setProperty("socksProxyHost", "192.168.0.254");
prop.setProperty("socksProxyPort", "8000");
有时代理需要进行身份验证 此时我们需要自己定义一个继承类Authenticator的类
public class MyAuthenticator extends Authenticator {
private String username = "";
private String password = "";
public MyAuthenticator(String username, String password) {
this.username = username;
this.password = password;
}
protected PasswordAuthentication getPasswordAuthentication() {
returnnew PasswordAuthentication(username, password.toCharArray());
}
}
//设置登陆到代理服务器的用户名和密码
Authenticator.setDefault(new MyAuthenticator("userName", "Password"));
当然此种方法可以满足大部分的需求 但是有一定的局限行,
就是所有的连接通过统一属性进行代理配置的,不能对特定连接进行代理配置。
JDK5及其之后版本引入新的代理配置,可以满足对特定连接进行配置
URL url = new URL("http://www.shanhe114.com");
//创建代理服务器
InetSocketAddress addr = new InetSocketAddress("10.28.0.4",
8080);
//Proxy proxy = new Proxy(Proxy.Type.SOCKS, addr); //SOCKS代理
Proxy proxy = new Proxy(Proxy.Type.HTTP, addr); //HTTP代理
//其他方式可以见Proxy.Type属性
URLConnection conn = url.openConnection(proxy);
InputStream in = conn.getInputStream();
//InputStream in = url.openStream();
String content = IOUtils.toString(in);
System.out.println(content);
分享到:
相关推荐
Java中的代理模式是一种设计模式,它允许我们创建一个代理类,该类代表并增强另一个对象(委托类)的功能,而不改变原始对象的行为。代理模式在软件开发中常用于控制访问、增加额外功能或提供安全机制。 一、代理...
首先,让我们详细了解`wsdl2Java`工具的使用步骤: 1. **安装Apache Axis**: 首先,你需要在你的开发环境中安装Apache Axis。这通常涉及下载Axis的二进制发行版,并将其解压到一个适当的目录。确保将该目录添加到...
Java集合框架中的许多实现采用了工厂方法、装饰器、适配器和代理等设计模式。 本章PDF课件详细讲解了这些概念,并可能包括实例代码演示、性能分析以及各种操作的注意事项,旨在帮助学习者深入理解并熟练运用Java...
当调用代理对象的任何方法时,实际上都会转到`invoke()`方法,我们可以在这个方法中插入自定义的逻辑,如添加日志记录、性能统计、异常处理等。`Proxy.newProxyInstance()`方法则用于创建代理对象,它需要`...
首先,Java中的`java.net.ProxySelector`类是用于选择网络连接所使用的代理服务器。通过这个类,我们可以获取到系统当前的代理设置。但是,直接使用`ProxySelector.getDefault()`只能得到系统级别的代理设置,而无法...
在这个名为“JADE Homework1”的项目中,我们将探讨如何使用Java和JADE来创建一个简单的代理,该代理具有有限状态行为,如睡觉、吃饭、喝酒、玩游戏以及工作。 首先,让我们了解代理的基本概念。在多代理系统中,...
在这个特定的项目中,开发者使用Java语言实现了代理服务器的功能,允许用户通过该代理来访问互联网。下面将详细解释相关知识点。 1. **Java Socket**: Java Socket是Java提供的网络编程接口,它提供了低级别的...
3. **JDK 1.2安全模型**:在JDK 1.2中,Java增强了密码学的支持,包括签名算法、消息摘要、密钥生成等,并引入了密钥管理和算法参数管理,以及支持多种密钥转换的代理。此外,Java Cryptography Extension (JCE)提供...
Java JDK 动态代理是一种强大的特性,它允许我们在运行时创建代理对象,这些代理对象可以扩展或增强已存在的接口实现。动态代理在处理AOP(面向切面编程)场景、事件监听、性能监控等方面有着广泛的应用。下面我们将...
HTTPS 代理-SNI Proxy-WebSocket 一直用sni proxy做...主要功能:HTTPS 转发、HTTPS反向代理、HTTP转HTTPS、HTTPS转HTTP 4。如果最后再加个参数”保存目录“,则所有转发的数据保存在该目录中,程序排错时比较有用
这将生成一系列的Java类,包括服务代理、消息处理器和服务实现类,它们可以直接在Java项目中使用。 3. **理解生成的Java代码** - **服务代理**:这是客户端与服务交互的主要接口,包含了调用服务方法的逻辑。 - ...
10. **级联操作与代理**:阐述级联属性的使用,如何实现对象间的联动操作,以及Hibernate的动态代理机制。 11. **实体关联映射**:详细解析各种关联映射方式,如一对一、一对多、多对一、多对多,以及它们在实际...
使用Java泛型转换C#ref参数 当代码中定义事件委托时转换C#事件,或者是System.Action或System.Func代理之一 将所有类型的数组从C#转换成Java 对于继承和接口的所有方面,从C#到Java的无瑕疵转换 允许自定义替换...
下面将详细介绍这两个关键组件以及如何创建和使用动态代理。 首先,`java.lang.reflect.Proxy`是用于生成动态代理类的类。它提供了一个静态方法`newProxyInstance()`,这个方法接收三个参数:一个类加载器、一个...
在Java企业级应用开发中,动态代理是一种常用的技术,它允许我们在不修改原始代码的情况下,为已有对象添加额外的功能或行为。本篇主要探讨的是基于Java的两种动态代理机制:JDK动态代理和CGLIB代理,它们在Spring...
在本文中,我们将探讨如何使用Java的动态代理来实现数据库连接池,从而解决传统连接池设计中的耦合度问题和资源管理问题。 首先,数据库连接池是应用程序管理数据库连接的一种高效方式。它通过复用已建立的数据库...
在Java中,有两种主要类型的代理:静态代理和动态代理。 **静态代理** 静态代理是在编译时创建的,代理类和目标类是明确的。我们需要为每个目标接口创建一个代理类,并在代理类中实现这些接口。代理类在调用目标...
例如,Spring框架广泛使用了依赖注入(Dependency Injection)和工厂模式,而Hibernate框架则采用了模板方法模式来简化数据库操作。学习设计模式有助于理解这些框架的工作原理,从而更高效地利用它们。 最后,设计...
12. 动态代理:Java 6通过java.lang.reflect包中的Proxy和InvocationHandler类支持动态代理,可以在运行时创建符合特定接口的代理对象,用于实现AOP(面向切面编程)等需求。 13. 日志:Java 6包含了java.util....
- 生成代理对象:使用`Proxy.newProxyInstance()`方法,传入类加载器、接口列表和你的`InvocationHandler`实例。 5. **ReflectProxyDemo示例** 在这个示例中,我们可以预期看到一个具体的`InvocationHandler`实现...