`
snoopy7713
  • 浏览: 1149160 次
  • 性别: Icon_minigender_2
  • 来自: 火星郊区
博客专栏
Group-logo
OSGi
浏览量:0
社区版块
存档分类
最新评论

java使用代理访问网络的几种方法

    博客分类:
  • java
 
阅读更多

方法一使用系统属性来完成代理设置, 这种方法比较简单, 但是不能对单独的连接来设置代理: 

 

public static void main(String[] args) {        
   Properties prop = System.getProperties();        
   // 设置http访问要使用的代理服务器的地址        
   prop.setProperty("http.proxyHost", "192.168.0.254");        
   // 设置http访问要使用的代理服务器的端口        
   prop.setProperty("http.proxyPort", "8080");        
   // 设置不需要通过代理服务器访问的主机,可以使用*通配符,多个地址用|分隔        
   prop.setProperty("http.nonProxyHosts", "localhost|192.168.0.*");        
   // 设置安全访问使用的代理服务器地址与端口        
   // 它没有https.nonProxyHosts属性,它按照http.nonProxyHosts 中设置的规则访问        
   prop.setProperty("https.proxyHost", "192.168.0.254");        
   prop.setProperty("https.proxyPort", "443");        
   // 使用ftp代理服务器的主机、端口以及不需要使用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.setDefault(new MyAuthenticator("userName", "Password"));
}    
static class MyAuthenticator extends Authenticator {        
   private String user = "";        
   private String password = "";        
   public MyAuthenticator(String user, String password) {            
      this.user = user;            
      this.password = password;        
   }        
   protected PasswordAuthentication getPasswordAuthentication() {            
      returnnew PasswordAuthentication(user, password.toCharArray());        
   }    
} 

 方法二使用Proxy来对每个连接实现代理, 这种方法只能在jdk 1.5以上的版本使用(包含jdk1.5), 优点是可以单独的设置每个连接的代理, 缺点是设置比较麻烦:

 

public static void main(String[] args) {        
  try {            
   URL url = new URL("http://www.baidu.com");            
   // 创建代理服务器            
   InetSocketAddress addr = new InetSocketAddress("192.168.0.254",8080);            
   Proxy proxy = new Proxy(Proxy.Type.HTTP, addr); // http 代理            
   // 如果我们知道代理server的名字, 可以直接使用          
   URLConnection conn = url.openConnection(proxy);            
   InputStream in = conn.getInputStream();  
   String s = IOUtils.toString(in);            
   System.out.println(s);        
} catch (Exception e) {            
   e.printStackTrace();        
}    
} 
 
分享到:
评论

相关推荐

    java网络代理源代码

    Java网络代理源代码是用于创建一个代理服务器的程序,它可以帮助开发者在调试和监控网络数据时获取必要的信息。这个源代码特别适用于理解如何利用Java的Socket编程实现网络代理功能。以下将详细介绍Java Socket和...

    Java中三种代理模式源码+文档

    在Java编程中,代理模式是一种常用的面向对象设计模式,它允许我们为一个对象提供一个代理以控制对该对象的访问。代理模式通常用于增加额外的功能、延迟加载、安全控制或者为远程对象提供本地接口等场景。这里我们将...

    Java 静态代理模式

    Java静态代理模式是一种设计模式,它允许我们为一个对象提供一个代理,以便增强或扩展其功能,同时不改变原有对象的代码。在Java中,静态代理是通过在代理类中显式实现目标接口来实现的。下面将详细介绍静态代理模式...

    Java代理服务器程序

    Java代理服务器程序是一种用于转发网络请求的应用,它在客户端与目标服务器之间起到中介的作用。这样的设计使得用户可以通过代理服务器访问互联网,从而实现多种功能,如匿名浏览、负载均衡、缓存优化、网络监控等。...

    java动态代理详细解析

    - **缓存策略**:在数据访问层,可以使用动态代理实现缓存策略,如方法调用前检查缓存,避免重复计算。 - **事务管理**:对数据库操作进行事务控制,确保一组操作的原子性。 - **性能监控**:在方法调用前后记录...

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

    动态代理是Java提供的一种强大特性,主要由`java.lang.reflect.Proxy`类和`java.lang.reflect.InvocationHandler`接口组成。其工作原理是在运行时动态创建一个实现了特定接口的新类,这个新类可以拦截方法调用并执行...

    Java编写的HTTP代理

    Java编写的HTTP代理是一种软件应用,它允许用户通过Java程序作为中介来访问互联网,从而实现对HTTP请求的转发。这种代理服务器通常用于多种用途,包括网络匿名性、内容过滤、性能优化以及网络测试等。在Java中实现...

    JAVA设计模式(代理模式)

    代理模式主要有以下几种类型: 1. **静态代理:**在编译时就已经确定了代理关系,通过接口或继承实现。静态代理的优点在于实现简单,但缺点是如果目标类数量较多,需要为每个目标类创建对应的代理类,代码量会变得...

    HTTP代理穿透方法

    2. **性能影响**:代理服务器可能会增加网络延迟,影响访问速度。 3. **配置复杂性**:正确配置代理服务器和客户端可能需要一定的技术知识。 4. **兼容性考虑**:不同的代理服务器和支持的协议可能有所不同,需要...

    java rmi远程方法调用 客户端

    Java RMI(Remote Method Invocation,远程方法调用)是Java平台提供的一种分布式计算技术,它允许在不同的Java虚拟机之间透明地调用...理解并掌握RMI的工作原理和使用方法,对于构建可扩展的Java应用程序至关重要。

    XFire 1.2.6调用Web Service的几种方法

    接着,使用 XFireProxyFactory 创建一个代理,然后使用代理访问服务提供的方法。这种方法可以提高调用服务的速度,减少调用服务的延迟时间。 方法三:客户端/服务端 Stubs Stubs 是 XFire 自动生成的客户端代码,...

    673.671.JAVA基础教程_动态代理与Java8新特性-方法引用的使用情况1(673).rar

    在本教程中,我们将深入探讨Java编程语言中的两个重要概念:动态代理和Java 8的新特性,特别是方法引用的使用。动态代理允许我们在运行时创建代理类,这些类可以代理其他对象并提供额外的功能,如日志、事务管理等。...

    java WebService调用的几种方式详细源代码

    本篇文章将详细介绍Java中调用WebService的几种常见方法,并提供相应的源代码示例。 1. **SOAP(Simple Object Access Protocol)调用**: SOAP是WebService的主要通信协议,基于XML格式的数据交换。在Java中,...

    java的几种设计模式

    下面,我们将深入探讨几种重要的Java设计模式。 1. **单例模式**:保证一个类只有一个实例,并提供全局访问点。这种模式常用于配置中心、线程池等需要全局共享的对象。实现方式有懒汉式(线程不安全)、饿汉式...

    java代理模式和动态代理

    ### Java代理模式和动态代理详解 #### 一、概述 在软件工程中,代理模式是一种常用的软件设计模式,主要用于在不直接暴露目标对象的情况下提供一个替代接口。这种模式可以简化客户端与目标对象之间的交互,同时还...

    Java网络编程 3rd

    - **代理设置**:讨论了如何配置Java应用程序以使用代理服务器访问互联网资源。 ##### 2.6 HTML与Swing - **HTML在Swing中的应用**:探讨了如何在Swing组件中显示和编辑HTML内容,例如使用JEditorPane控件。 - **...

    java代理模式

    代理模式是一种设计模式,它是软件开发中的一种结构型模式,主要用来在客户端和目标对象之间创建一个代理对象,代理对象负责控制对目标对象的访问。代理模式的核心思想是为一个对象提供一个代理,并由代理对象控制对...

    跨网段获取远程主机MAC地址的方法与java实现

    具体而言,SNMP协议通过以下几种基本操作实现: 1. **Get**:用于从网络设备中检索特定信息。 2. **Set**:用于修改网络设备上的参数。 3. **Trap**:用于接收网络设备主动发送的事件通知。 #### 利用三层交换机的...

    JAVA类加载机制与动态代理

    根据Java虚拟机规范的规定,在以下几种情况下必须对类进行初始化: 1. **当遇到`new`、`getstatic`、`putstatic`或`invokestatic`这四条字节码指令时**,例如使用`new`关键字实例化对象、读取或设置一个类的静态...

Global site tag (gtag.js) - Google Analytics