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

在代理后面运行vertx

祁渊
2023-03-14

有谁有幸尝试使用vertx bihind作为公司代理?我已经尝试了我脑海中出现的任何可能的方式来向vertx提供代理信息。到目前为止没有任何效果。

设置环境变量http_proxy=http://mycorporate.proxy.com:8080-运气不好

设置环境变量VERTX_OPTS='-Dhttp.proxy主机=mycorporate.proxy.com-Dhttp.proxy端口=8080'-没有运气

设置环境变量http.proxyHost=mycorporate.proxy。com http。代理端口=8080不走运

在vertx命令中注入额外的echo,我可以看到与代理相关的参数正在正确地传递给JVM,但所需的模块仍然无法下载(“vertx run hello.js”显然在尝试下载io时卡住了。vertx ~ lang rhino ~ 2.0.0-final)

代理本身没问题-我使用它对maven、sbt和其他需要代理的不同东西没有问题。在家使用的同一台笔记本电脑可以成功运行“vertx run hello.js”,下载io。vertx ~ lang rhino ~ 2.0.0-final(第一次运行)

我刚刚开始评估vertx是否符合我们公司的需求,这是我第一次遇到阻碍我进一步做出决定的瓶颈。到目前为止,我必须遵循以下步骤作为解决方法:1在家中运行,并在sys mods中获取所需的任何模块。2当返回办公室时,手动将模块上传到测试服务器上的sys mods。显然,这不是一种正常的运行方式。

共有3个答案

彭正谊
2023-03-14

我使用vertx 3.8.0

java prettyprint-override">                HttpClient c = vertx.createHttpClient();
                        RequestOptions requestOptions = new RequestOptions();
                        requestOptions.setHost(ip).setPort(port).setURI("http://httpbin.org/ip");
                        c.request(HttpMethod.GET, requestOptions).handler(new Handler<HttpClientResponse>() {
                            @Override
                            public void handle(HttpClientResponse event) {
                                event.handler(new Handler<Buffer>() {
                                    @Override
                                    public void handle(Buffer event) {
                                        System.out.println(event);
                                    }
                                });
                            }
                        }).end();
纪枫
2023-03-14

基于@kamyk-pl答案。如果您使用最新版本的Vertx,您可以这样做:

    WebClientOptions webClientOptions = new WebClientOptions();
    String proxyHost = System.getProperty("http.proxyHost", "none");
    Integer proxyPort = Integer.valueOf(System.getProperty("http.proxyPort", "80"));

    if(!"none".equalsIgnoreCase(proxyHost)){
        ProxyOptions proxyOptions = new ProxyOptions();
        proxyOptions.setHost(proxyHost);
        proxyOptions.setPort(proxyPort);
        webClientOptions.setProxyOptions(proxyOptions);
    }

     WebClient.create(vertx, webClientOptions) 

如果您正在测试SSL连接,您还可以选择添加此项

        webClientOptions.setVerifyHost(false);
        webClientOptions.setTrustAll(true);
吴同
2023-03-14

我也有类似的问题。我发现HttpClient表单不会从JVM_OPTS读取设置。因此,解决方案如下:

编辑顶点。bat(sh)

set JVM_OPTS=-Dhttp.proxyHost=xxxx -Dhttp.proxyPort=xxxx

然后在与httpClient相关的代码中尝试以下内容

   HttpClient client = vertx.createHttpClient();
    String proxyHost = System.getProperty("http.proxyHost", "none");
    Integer proxyPort = Integer.valueOf(System.getProperty("http.proxyPort", "80"));

    if(!"none".equalsIgnoreCase(proxyHost)){

        client.setHost(proxyHost);
        client.setPort(proxyPort);
    }

后来在代码中转接到HTTP请求

   MultiMap map = new CaseInsensitiveMultiMap();
   map.add("Host", domainName); //get domain of REQUESTED_URL                 
   client.getNow(REQUESTED_URL, map, new new Handler<HttpClientResponse>(){...});
 类似资料:
  • 我一直在使用selenium进行python中的自动浏览器模拟和web抓取,这对我来说效果很好。但是现在,我必须在代理服务器后面运行它。因此,现在selenium将打开窗口,但无法打开请求的页面,因为未在打开的浏览器上设置代理设置。当前代码如下(示例): 我现在如何更改上述代码以使用代理服务器?

  • 问题内容: 我一直在使用selenium在python中自动进行浏览器模拟和Web抓取,对我来说效果很好。但是现在,我必须在代理服务器后运行它。现在,selenium打开了窗口,但是由于未在打开的浏览器中设置代理设置而无法打开请求的页面。当前代码如下(示例): 如何更改上面的代码以立即与代理服务器一起使用? 问题答案: 您需要设置所需的功能或浏览器配置文件,如下所示:

  • 我在minikube上运行kubernetes,我在一个代理后面,所以我设置了env变量(HTTP_代理) pod从未启动,我得到了错误 运行良好

  • 我已经将我的keycloak服务器放置在apache代理后面: 我成功地告诉javascript端的keycloak使用/auth进行身份验证: 我已经设法登录了,但是在发出服务器请求之后,过滤器(from)抛出异常: 我如何才能使该设置工作?

  • 我正在尝试连接到运行在apache代理后面的Jira REST API。我尝试使用PythonJira模块来完成这项任务,它工作得很好,因为我绕过apache代理授权直接连接到jira。然而,随着apacheproxy的启动,我不断地遇到“Err:401unauthorized”错误。 问题是我需要提供两次授权凭据,一次用于代理,一次用于Jira。 所有测试都在我的本地虚拟机上完成。 apache

  • 问题内容: 我正在使用Attach API在运行时加载JVMTI代理。我想在完成程序后卸载JVMTI代理,而不会终止加载该代理的JVM。根据此文档,无法从Attach API进行此操作。还有其他方法可以强制代理通过Java API或从JVMTI代理内部卸载自身吗? 问题答案: JVMTI 规范说可以卸载(不终止JVM),但是卸载依赖于平台且超出规范范围。