如何在小程序中设置 Http 代理

Posted

技术标签:

【中文标题】如何在小程序中设置 Http 代理【英文标题】:How to set Http Proxy in an applet 【发布时间】:2011-10-04 09:14:18 【问题描述】:

对于我们设置这些属性后的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 settings 中定义的这些设置。

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

Applet 使用 java 1.6 签名和编译

【问题讨论】:

【参考方案1】:

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

您是否尝试过使用ProxySelector?请参阅this document 的第 4) 部分。

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

【讨论】:

@NikolayKuznetsov - 我想是这样......因为这就是他要问的。 但我猜无法自动检测浏览器当前使用的代理。至少,我找不到任何东西。 +1 顺便说一句 你读过这个吗? docs.oracle.com/javase/6/docs/technotes/guides/deployment/….【参考方案2】:

您可以使用 API 执行此操作,但不能针对每个连接。

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

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

【讨论】:

以上是关于如何在小程序中设置 Http 代理的主要内容,如果未能解决你的问题,请参考以下文章

Webpack 4 代理(如何在 webpack 4 中设置代理 url)

如何在 QtWebEngine QML 应用程序中设置用户代理

Java 中怎样在程序中设置代理服务器

在 C# 中设置 Internet Explorer / Windows 以使用 Socks5 代理

如何使用 JAVA_OPTS 在 gitlab-ci.yaml 中设置 Gradle 代理变量

以编程方式在 iOS 设置中设置全局 Http 代理的可能方法是啥?