`
wtnhwbb
  • 浏览: 164144 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java 启动时设置代理

阅读更多
普通代理
System.getProperties().put("proxySet","true");

		System.getProperties().put("proxyHost","192.168.0.26");

		System.getProperties().put("proxyPort","808"); 
 socks4 代理 端口 1080
		System.getProperties().put("socksProxySet","true");

		System.getProperties().put("socksProxyHost","192.168.0.26");

		System.getProperties().put("socksProxyPort","1080");
 

原文:
ystem.getProperties().put("proxySet","true");

System.getProperties().put("proxyHost","myProxyMachineName");

System.getProperties().put("proxyPort","85");

上面的第一行通知Java您要通过代理进行连接,第二行指定代理所在的机器,第三行指定代理监听的端口。有些代理在授权用户访问因特网之前,要求用户输入用户名和口令。如果您使用位于防火墙之内的Web浏览器,您就可能碰到过这种情况。以下是执行认证的方法:

URLConnectionconnection=url.openConnection();

Stringpassword="username:password";

StringencodedPassword=base64Encode(password);

connection.setRequestProperty("Proxy-Authorization",encodedPassword);

这段代码的思想是,您必须调整HTTP标头以发出用户信息。这是通过调用setRequestProperty()来实现的。这种方法允许您在发出请求之前处理HTTP标头。HTTP要求用base64对用户名和口令进行编码。幸运的是,有一组公用域API,它们将代您执行编码(请参阅参考资源部分)。

如您所见,在Java应用程序中加入代理支持并不需要做多少工作。有了现在的知识,再做一点研究(您必须查明您的代理是如何处理您感兴趣的协议以及如何进行用户认证的),您就能用其他协议实现代理。

FTP代理

ScottD.Taylor提出这个秘诀来处理FTP协议代理:

defaultProperties.put("ftpProxySet","true");

defaultProperties.put("ftpProxyHost","proxy-host-name");

defaultProperties.put("ftpProxyPort","85");

接下来您便可以通过以下代码使用"ftp"协议访问文件URL:

URLurl=newURL("ftp://ftp.netscape.com/pub/navigator/3.04/windows/readme.txt");

如果有人有使用其他网际协议代理的例子,我很想看看。

注意:代码示例(Example.java)仅在JDK1.1.4下测试过。

后续技巧!

对于仍在使用JDK1.1.7(配合WebSphere3.0)的开发人员而言,将proxyHost和proxyPort设为系统属性不起作用;conn.getInputStream()或者返回连接超时,或者是找不到主机路径。但是,我使用接受Host和Port为参数的URL构造函数解决了这一问题(使用我的代理主机和端口):

publicURL(Stringprotocol,Stringhost,intport,Stringfile).

借助用户名和口令进行认证的方法不起作用。应将"Basic"置于认证字符串的开头;例如:

StringencodedPassword=base64Encode(password);

应该是:

StringencodedPassword="Basic"+base64Encode(password);

您也不必用一个单独的程序来进行64位编码。您可以使用sun.misc.BASE64Encoder()类。下面是完成这两处改动之后的代码:

System.getProperties().put("proxySet","true");

System.getProperties().put("proxyHost",proxyHost);

System.getProperties().put("proxyPort",proxyPort);

StringauthString="userid:password";

Stringauth="Basic"+newsun.misc.BASE64Encoder

().encode(authString.getBytes());

URLurl=newURL("http://java.sun.com/");

URLConnectionconn=url.openConnection();

conn.setRequestProperty("Proxy-Authorization",auth);

下面是使用socks4代理服务器的方法:

System.getProperty("socksProxySet",true);

System.getProperty("socksProxyHost",proxyHostName);

System.getProperty("socksProxyPort",proxyPort);

UsuallytheproxyPortforSocks4isport1080

 

分享到:
评论
1 楼 zoare 2008-06-01  
谢了——zoare

相关推荐

    java多线程代理IP池

    简单的来说,启动后,会一直定时的获取代理ip,并自动检测代理ip的活跃度。运用多线程的技术,在极短的时间内获取大量的ip进行筛选。架构也比较清楚,方便大家学习参考 需要主要的是,代理ip获取成功后是放在redis...

    Java实现的反向代理程序(使用到的JAR包)

    该资源是“Java实现的反向代理程序(编译版)”使用到的一些公共JAR包,主要包含“commons-text-1.4.jar”和“javax.servlet_1.0.0.0_2-5.jar”这两个JAR包,共有兴趣的同道人下载。

    JAVA代理服务器

    JAVA,代理服务器,JAVA代理服务器 本小工具是使用JAVA开发的代理服务器,只要设置好代理端口(端口在100~65000之内的任意没被占用的端口都可以),点击启动,局域网内用户就可以设置通过代理联网

    Zabbix通过JMX方式监控java中间件

    Java-gateway通过配置文件中START_POLLERS参数设置启动多个线程,在zabbix服务器这边如果一个连接所用时间超过Timeout,将会被中断,但是Java-gateway将继续从JMXcounter取数据。所以 StartJavaPollers设置的值要...

    JAVA上百实例源码以及开源项目

     util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...

    JAVA上百实例源码以及开源项目源代码

     util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...

    Java基础知识点总结.docx

    创建线程和启动 39 线程的生命周期 44 线程管理 45 线程同步 49 线程通信 52 线程池 58 死锁 64 线程相关类 65 十三、 同步★★★★★ 67 十四、 Lock接口 70 十五、 API 71 < java.lang >String字符串:★★★☆ 71...

    java jdk实列宝典 光盘源代码

    代理服务器,ProxyServer.java; telnet客户端,访问系统的telnet服务实质上是与telnet服务建立socket连接,默认的telnet服务的端口是23,TelnetClient.java; UDP编程,包括收发udp报文; 聊天室服务器端,Chat...

    socketproxy:一个简单的 Java 多线程 Socket 代理服务器。 它侦听传入的连接并将任何通信转发到服务器,同时记录整个对话

    套接字代理一个简单的 Java 多线程 Socket 代理服务器。 它侦听传入的连接并将任何通信转发到服务器,同时记录整个对话。套接字代理服务器这是库的主类。 它可以由第三方实例化,并提供本地端口和服务器的远程主机/...

    启动tomcat时 错误: 代理抛出异常 : java.rmi.server.ExportException: Port already in use: 1099的解决办法

     今天一来公司,在IntelliJ IDEA 中启动Tomcat服务器时就出现了如下图所示的错误:  错误: 代理抛出异常错误: java.rmi.server.ExportException: Port already in use: 1099; nested exception is: java.net....

    java-tracing-agent:Java运行时动态跟踪

    Java跟踪代理 一个轻量级且快速的运行时注入工具,用于日志记录和跟踪...可以在应用程序启动和运行时进行更改 跟踪配置JSON的任何更改都会在运行时获取并应用 可以在运行时打开或关闭所有跟踪器 记录中 记录方法参数,

    Java单元测试框架源码分钟-newrelic-java-agent:NewRelicJava代理

    以通过传递-javaagent:/full/path/to/newrelic.jar命令行参数在应用程序的premain启动期间加载代理。 此过程因您的环境/应用程序服务器而异。 有关完整详细信息,请参阅: 入门 有关 Java 代理支持的内容的概述,请...

    一个TCP代理程序

    再运行TcpProxyRunner,启动代理功能。 然后客户机访问端口1235,代理会将请求转发到端口1234,同时代理会将收和发的数据显示到Console上,供你参考,用来观察数据传输的实际情况。 还可以同时开启多个端口的代理...

    疯狂JAVA讲义

    学生提问:当我们使用编译C程序时,不仅需要指定存放目标文件的位置,也需要指定目标文件的文件名,这里使用javac编译Java程序时怎么不需要指定目标文件的文件名呢? 13 1.5.3 运行Java程序 14 1.5.4 根据...

    SocketHttp代理插件访问公网

    1、使用场景:应用部署的...2、附件有源码,直接打包运行SocketServer,就能启动一个Socket的Http访问代理服务了,Test源文件是调用例子,直接调用proxyRequest方法(传入ip,port,需要代理访问的公网url参数)即可。

    java基础案例与开发详解案例源码全

    1.4.3 设置环境变量13 1.4.4 验证配置的正确性14 1.5 MyEcilpse工具介绍JavaSE环境安装和配置15 1.6 本章练习16 第2章 2.1 什么是程序18 2.2 计算机中的程序18 2.3 Java程序19 2.3.1 Java程序中的类型19 2.3.2 Java...

    java8源码-back-end-java-server:spring启动后端服务器

    使用node做权限验证和反向代理,java服务器只在服务器本地启动,不考虑权限问题 调试 前置条件 java环境(java8, 不要用java9+版本) 使用ide时需要添加lombok插件 maven环境 mysql环境,推荐mariadb (二选一)自行搭建...

    java-memory-assistant:一个Java代理,可根据可配置的阈值和内存消耗模式自动创建堆转储

    Java 内存助手当满足整个heap或单个内存池(例如eden , old gen等)的内存使用量阈值时,将自动生成堆转储的Java代理(如 )。 不像其他的Java代理,Java内存助手不会通过做字节码操作 。 它作为 Java 代理提供只是...

    java毕业设计之休闲娱乐代理售票系统(springboot项目源码+LW+PPT+视频).zip

    java毕业设计之休闲娱乐代理售票系统(springboot项目源码+LW+PPT) 考虑到实际生活中休闲娱乐代理售票管理方面的需要以及对该系统认真的分析,将系统权限按管理员和用户这两类涉及用户划分。 (1)管理员功能需求 ...

    Java JDK实例宝典

    全部代码出自电子工业出版社夏先波的《Java JDK实例宝典》一书,本书以J2SE 5.0为开发环境,选取Java应用的典型实例,循序渐进地介绍了Java语言的各种开发方法和技巧,实例代码注释详细规范,思路清晰。 第1章 ...

Global site tag (gtag.js) - Google Analytics