如何在applet中设置Http Proxy

对于我们设置这些属性后的Java桌面应用程序

System.setProperty("java.net.useSystemProxies","true"); System.setProperty("http.proxyHost", "1.1.1.1"); System.setProperty("http.proxyPort", "8080"); 

每个http连接都将通过定义的代理完成。

但是对于一个小程序,它们不起作用 。(在applet查看器中它可以,但在浏览器中它不会。)小程序总是使用在控制面板\ java \ network settings \ proxy设置中定义的这些设置。

如何在applet中设置代理? (在每个开放连接中使用代理类对我来说不是一个解决方案。)

Applet使用java 1.6进行签名和编译

我想,系统属性方法不起作用的真正原因是,当applet启动时,Java运行时系统已经读取了属性并设置了默认代理选择器。

您是否尝试过使用ProxySelector ? 请参阅本文档的第4节)。

当然,这只有在您的applet是签名小程序时才有效。

您可以使用API​​但不能为每个连接执行此操作。

看看URL.openConnection()。 它将调用委托给handler。 处理程序工厂创建处理程序(如果已注册)。 因此,您必须注册自己的工厂,创建通过代理执行URL连接的URL处理程序(调用URL.openConnection(代理))。

Factory必须实现接口URLStreamHandlerFactory,并且可以通过调用静态方法URL.setURLStreamHandlerFactory()来注册。