当前位置: 首页 > 知识库问答 >
问题:

在JavaFX WebEngine上设置代理?

潘智刚
2023-03-14

如何为每个WebView实例设置代理?

这是我到目前为止所拥有的:

public void start(Stage stage) {
    StackPane root = new StackPane();

    WebView view = new WebView();
    WebEngine engine = view.getEngine();
    engine.load("https://www.google.com");
    root.getChildren().add(view);

    Scene scene = new Scene(root, 960, 640);
    stage.setScene(scene);
    stage.show();
}

public static void main(String[] args) throws IOException {
    Application.launch(args);
}

这会启动一个带有谷歌页面的窗口。

但是如何设置代理?不是VM系统代理,而是每个WebView窗口的代理。

共有3个答案

哈和惬
2023-03-14

你应该使用

System.set属性("http.proxy主机","您的代理地址");System.set属性("http.proxy端口","您的端口");

对于http站点和

<代码>系统。setProperty(“https.proxyHost”,“您的代理地址”);系统setProperty(“https.proxyPort”,“您的端口”)

对于https站点

百里意智
2023-03-14

http。代理不工作,我不得不使用http。代理主机。

System.setProperty("http.proxyHost","proxy.esrf.fr");
System.setProperty("http.proxyPort","3128");
龙珂
2023-03-14

从部署概述中:

3.2.3内置代理支持

正确打包的JavaFX应用程序根据Java运行时配置设置初始化代理设置。默认情况下,这意味着如果应用程序嵌入到网页中,将从当前浏览器获取代理设置,或者将使用系统代理设置。默认情况下,在所有执行模式下都会初始化代理设置。

可能无法设置每个WebView实例。我想到了一个黑客,但我真的不想这么做——扩展WebView,这样每当用户(以及WebView中的脚本等)与它交互时,它就会调用系统。setProperty(“http.proxy”,this.myProxy)。类似于:

class KludgeWebView extends WebView {
  String myProxy;
  String myProxyPort;
  String sysProxy;
  String sysProxyPort;

  KludgeWebView()
  {
    super();

    sysProxy = System.getProperty("http.proxy");
    sysProxyPort = System.getProperty("http.proxyPort");
  }

  public void load(String url)
  {
    useProxy();
    super.load(url);
    revertProxy();
  }

  public void useProxy()
  {
    System.setProperty("http.proxy",myProxy);
    System.setProperty("http.proxyPort", myProxyPort);
  }

  public void revertProxy()
  {
    System.setProperty("http.proxy",sysProxy);
    System.setProperty("http.proxyPort", sysProxyPort);    
  }
}

然而,这对我来说似乎很混乱。它可能会错过一些事情,例如用户单击WebView内的链接,或者执行XmlHttpRequest之类操作的脚本。除非你别无选择,否则我不会建议你这么做。

 类似资料:
  • 我已经在EC2上安装了Kafka软件。我的问题是从AWS外部连接到经纪人。这一切都从内部为我工作。 因此,我可以启动代理,并且 kafka 控制台生产者和消费者都可以工作(来自同一服务器)。我有端口 2181 和 9092 打开到远程位置,朝向我想使用 producer 的位置。所以从我的开发(本地)机器.如果我做telnet 9092 - 它会连接我。如果我尝试使用Kafka控制台生产者,我会收

  • 问题内容: 我正在尝试在Android上使用React Native 设置。做过一些研究,看来我应该使用 拦截器 。我找到了一个示例,说明了如何完成此操作(Link),但是随后我不确定如何注册拦截器。 所以为了设置我正在使用这个类: 那么剩下的就是注册上述拦截器,那么应​​该在哪里做呢?也许在吗? 构建应用程序时我没有收到任何错误,因此我认为应该没问题-只需使应用程序使用它即可。 更新 :我目前正

  • 问题内容: 在某些代码块的运行时间超过可接受的时间之后,是否可以强制Java引发Exception? 问题答案: 是的,但是强制另一个线程在随机的代码行上中断通常是一个非常糟糕的主意。仅当您打算关闭该过程时,才这样做。 您可以做的是在一定时间后用于任务。但是,除非代码对此进行检查,否则它将无法正常工作。ExecutorService可以使此操作更容易 代码自动计时并在需要时停止会更好。

  • 问题内容: 简而言之 :如何在Mac OS X上为Docker设置HTTP / HTTPS代理? 详细说明 : 我在代理后面的Mac OS X上运行Docker(1.12)。我按照安装说明进行操作,并安装了boot2docker。如果我从网络内部Docker注册表中提取信息,则此方法工作正常。 但是,从docker.io拉出时出现以下错误: 注1 :,并在环境中可用(运行显示全部三个)。 注2 :

  • 问题内容: 我可以如下设置Firefox的代理设置。 但是我也需要设置Chrome。.有人可以帮助我怎么做吗? 谢谢拉吉 问题答案: 您可以尝试使用该类,如下所示:

  • 问题内容: 在Webfaction共享主机帐户上设置Redis数据库需要执行哪些步骤? 问题答案: 由于Webfaction服务器的特殊环境限制,安装说明并不像它们那样简单。不过,最后您将拥有一个功能齐全的Redis服务器,即使重新启动后它也可以保持运行状态。大约半年前,我通过以下步骤亲自安装了Redis,此后一直运行良好。只是警告一下,半年不是很长的时间,尤其是因为服务器没有被大量使用。 这些说