`
wtnhwbb
  • 浏览: 166062 次
  • 性别: 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编写的HTTP代理

    在提供的文件列表中,`runrun.bat`和`run.bat`很可能是启动代理服务器的批处理脚本,它们可能包含Java虚拟机(JVM)的命令行参数,例如指定Java应用程序的主类和jar文件的位置。而`ieproxy.jar`则是实际的Java可执行...

    java 代理例子 -javaagent,premain方式实现

    Java代理是一种在运行时增强或拦截对象方法调用的技术,它可以让我们在不修改原有代码的情况下,为类添加新的功能或行为。在Java中,代理主要分为两种:静态代理和动态代理。静态代理是通过手动创建代理类来实现的,...

    Java设计模式之代理模式(结构)

    当客户端请求代理时,代理会检查RealSubject对象是否已经被创建。如果没有,则创建;如果已经创建,则直接使用。 #### 四、虚拟代理模式的优点 1. **减少内存消耗**:通过延迟创建大对象,可以在系统启动初期节约...

    java socket编写的上网代理

    然后执行`Start.java`生成的类,启动代理服务。接着,在浏览器的网络设置中,配置代理服务器为“localhost”,端口号为10101。这样,浏览器的所有HTTP请求都会通过这个本地的Socket代理进行转发。 6. **安全性与...

    java网络代理源代码

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

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

    数据库连接池是一种用于管理数据库连接的技术,它能够在应用程序启动时创建一定数量的数据库连接,并将其保存在一个池中供后续使用。当应用程序需要访问数据库时,可以直接从连接池中获取一个已存在的连接,而无需...

    Java的HTTP代理服务器 Smart Cache

    1. scache.bat 和 repair.bat:这两个批处理文件可能是启动和维护Smart Cache服务的脚本,scache.bat可能是启动代理服务器的命令,而repair.bat可能用于执行缓存修复或清理任务。 2. gc.bat:这个名字通常与Java的...

    java JAVA_OPTS javaagent

    标题中的"java JAVA_OPTS javaagent"涉及到Java应用程序的启动参数设置,特别是`JAVA_OPTS`环境变量和`javaagent`选项,这两个是Java虚拟机(JVM)启动时的关键配置项。`JAVA_OPTS`通常用于传递额外的JVM参数,如...

    java HTTP代理源码

    - **代理服务器的初始化**:设置监听端口,启动服务器,准备接收客户端连接。 - **请求处理逻辑**:接收客户端连接,读取HTTP请求,解析请求头和消息体,构造新的请求发送到目标服务器。 - **响应处理逻辑**:...

    Java代理服务器的实现

    当代理服务器接收到请求时,如果设置了父代理,则会将请求转发给父代理而不是直接的目标服务器。 5. **请求处理逻辑**:在`run()`方法中,首先设置套接字的超时时间,然后获取输入流并开始读取客户端发送的数据。这...

    java代理源码

    当用户在服务器上部署这个"代理.war"文件时,应用服务器会自动将其解压并启动其中的Servlet容器,使Web代理程序生效。用户可以通过配置代理服务器的端口和其他参数,使其按照需求工作。 总的来说,这个Java代理源码...

    代理服务器实现-java(源码)

    然后,你可以通过在命令行输入`java ProxyServer` 来启动代理服务器。 - 要测试代理服务器,你可以配置浏览器或其他HTTP客户端来使用这个服务器作为代理,然后访问网页,查看代理服务器控制台输出的客户端信息和...

    JAVA类加载机制与动态代理

    4. **当虚拟机启动时,用户需指定执行的主类(包含`main()`方法的类)会被初始化**。 5. **使用JDK 1.7的动态语言支持时**,如果`java.lang.invoke.MethodHandle`实例最后的解析结果是`REF_getStatic`、`REF_...

    tt.rar_ java_Java 代理服务器_java 线程_代理服务器_服务器

    Java代理服务器是一种网络通信工具,它允许客户端通过它与目标服务器进行通信,以此来隐藏原始客户端的IP地址或者实现特定的网络访问策略。在Java中实现代理服务器涉及到多个关键概念和技术,包括网络编程、多线程...

    JAVA启动参数大全.pdf

    总的来说,理解和掌握这些Java启动参数对于开发者来说非常重要,它们可以帮助优化应用程序的性能,解决如OutOfMemoryError等运行时问题,以及提高整体的系统稳定性。在实际应用中,应根据具体情况选择合适的参数组合...

    java动态代理实现自定义连接池

    Java动态代理机制是一种强大的工具,它允许我们在运行时创建具有特定接口的新对象,这些对象的行为在编译时未被明确指定。动态代理通常用于实现AOP(面向切面编程)和拦截器模式,使得我们可以在不修改源代码的情况...

    JAVA代理服务器

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

    java阻塞模型tns协议代理

    Java阻塞模型是一种常见的编程模式,它在处理网络通信时,会使得线程在等待数据到达时暂停执行,直到数据准备好或超时。在这种模型下,一个线程被分配到每个连接,当连接没有活动(如等待数据)时,线程会阻塞,释放...

Global site tag (gtag.js) - Google Analytics