`
ytfei
  • 浏览: 89413 次
社区版块
存档分类
最新评论

转:java 使用代理

    博客分类:
  • Java
阅读更多

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静态代理和动态代理

    Java中的代理模式是一种设计模式,它允许我们创建一个代理类,该类代表并增强另一个对象(委托类)的功能,而不改变原始对象的行为。代理模式在软件开发中常用于控制访问、增加额外功能或提供安全机制。 一、代理...

    把wsdl文件转换成java类 使用wsdl2Java工具

    首先,让我们详细了解`wsdl2Java`工具的使用步骤: 1. **安装Apache Axis**: 首先,你需要在你的开发环境中安装Apache Axis。这通常涉及下载Axis的二进制发行版,并将其解压到一个适当的目录。确保将该目录添加到...

    第16章:Java集合.zip_java 集合_java集合

    Java集合框架中的许多实现采用了工厂方法、装饰器、适配器和代理等设计模式。 本章PDF课件详细讲解了这些概念,并可能包括实例代码演示、性能分析以及各种操作的注意事项,旨在帮助学习者深入理解并熟练运用Java...

    java动态代理详细解析

    当调用代理对象的任何方法时,实际上都会转到`invoke()`方法,我们可以在这个方法中插入自定义的逻辑,如添加日志记录、性能统计、异常处理等。`Proxy.newProxyInstance()`方法则用于创建代理对象,它需要`...

    java获取浏览器代理设置

    首先,Java中的`java.net.ProxySelector`类是用于选择网络连接所使用的代理服务器。通过这个类,我们可以获取到系统当前的代理设置。但是,直接使用`ProxySelector.getDefault()`只能得到系统级别的代理设置,而无法...

    JADEHomework1:Java JADE 代理有限状态行为

    在这个名为“JADE Homework1”的项目中,我们将探讨如何使用Java和JADE来创建一个简单的代理,该代理具有有限状态行为,如睡觉、吃饭、喝酒、玩游戏以及工作。 首先,让我们了解代理的基本概念。在多代理系统中,...

    java socket编写的上网代理

    在这个特定的项目中,开发者使用Java语言实现了代理服务器的功能,允许用户通过该代理来访问互联网。下面将详细解释相关知识点。 1. **Java Socket**: Java Socket是Java提供的网络编程接口,它提供了低级别的...

    Java技术:java对安全性的支持.pdf

    3. **JDK 1.2安全模型**:在JDK 1.2中,Java增强了密码学的支持,包括签名算法、消息摘要、密钥生成等,并引入了密钥管理和算法参数管理,以及支持多种密钥转换的代理。此外,Java Cryptography Extension (JCE)提供...

    java jdk 动态代理 演示demo

    Java JDK 动态代理是一种强大的特性,它允许我们在运行时创建代理对象,这些代理对象可以扩展或增强已存在的接口实现。动态代理在处理AOP(面向切面编程)场景、事件监听、性能监控等方面有着广泛的应用。下面我们将...

    HTTPS 代理-SNI Proxy-WebSocket-Java

    HTTPS 代理-SNI Proxy-WebSocket 一直用sni proxy做...主要功能:HTTPS 转发、HTTPS反向代理、HTTP转HTTPS、HTTPS转HTTP 4。如果最后再加个参数”保存目录“,则所有转发的数据保存在该目录中,程序排错时比较有用

    使用axis将wsdl文件转换为java代码

    这将生成一系列的Java类,包括服务代理、消息处理器和服务实现类,它们可以直接在Java项目中使用。 3. **理解生成的Java代码** - **服务代理**:这是客户端与服务交互的主要接口,包含了调用服务方法的逻辑。 - ...

    精通Hibernate:Java持久化对象技术详解[第二版]

    10. **级联操作与代理**:阐述级联属性的使用,如何实现对象间的联动操作,以及Hibernate的动态代理机制。 11. **实体关联映射**:详细解析各种关联映射方式,如一对一、一对多、多对一、多对多,以及它们在实际...

    java jdk 动态代理演示demo

    下面将详细介绍这两个关键组件以及如何创建和使用动态代理。 首先,`java.lang.reflect.Proxy`是用于生成动态代理类的类。它提供了一个静态方法`newProxyInstance()`,这个方法接收三个参数:一个类加载器、一个...

    C# To JAVA Converter v17.10.6

    使用Java泛型转换C#ref参数 当代码中定义事件委托时转换C#事件,或者是System.Action或System.Func代理之一 将所有类型的数组从C#转换成Java 对于继承和接口的所有方面,从C#到Java的无瑕疵转换 允许自定义替换...

    基于java的企业级应用开发:JDK动态代理.ppt

    在Java企业级应用开发中,动态代理是一种常用的技术,它允许我们在不修改原始代码的情况下,为已有对象添加额外的功能或行为。本篇主要探讨的是基于Java的两种动态代理机制:JDK动态代理和CGLIB代理,它们在Spring...

    使用JAVA中的动态代理实现数据库连接池

    在本文中,我们将探讨如何使用Java的动态代理来实现数据库连接池,从而解决传统连接池设计中的耦合度问题和资源管理问题。 首先,数据库连接池是应用程序管理数据库连接的一种高效方式。它通过复用已建立的数据库...

    agent:Java代理

    在Java中,有两种主要类型的代理:静态代理和动态代理。 **静态代理** 静态代理是在编译时创建的,代理类和目标类是明确的。我们需要为每个目标接口创建一个代理类,并在代理类中实现这些接口。代理类在调用目标...

    设计模式:Java语言中的应用.rar

    例如,Spring框架广泛使用了依赖注入(Dependency Injection)和工厂模式,而Hibernate框架则采用了模板方法模式来简化数据库操作。学习设计模式有助于理解这些框架的工作原理,从而更高效地利用它们。 最后,设计...

    The Java Language Specification, Java SE 6 Edition.rar

    12. 动态代理:Java 6通过java.lang.reflect包中的Proxy和InvocationHandler类支持动态代理,可以在运行时创建符合特定接口的代理对象,用于实现AOP(面向切面编程)等需求。 13. 日志:Java 6包含了java.util....

    Java动态代理ReflectProxyDemo

    - 生成代理对象:使用`Proxy.newProxyInstance()`方法,传入类加载器、接口列表和你的`InvocationHandler`实例。 5. **ReflectProxyDemo示例** 在这个示例中,我们可以预期看到一个具体的`InvocationHandler`实现...

Global site tag (gtag.js) - Google Analytics