4

有没有人幸运地尝试使用 vertx bihind 公司代理?我已经尝试了任何可能的方法来向 vertx 提供代理信息。到目前为止没有任何效果。

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

设置环境变量 VERTX_OPTS='-Dhttp.proxyHost=mycorporate.proxy.com -Dhttp.proxyPort=8080' - 不走运

设置环境变量 http.proxyHost=mycorporate.proxy.com http.proxyPort=8080 没有运气

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

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

我刚刚开始为我们公司的需求评估 vertx,这是我第一个阻碍我进一步尝试做出决定的瓶颈。到目前为止,我必须按照以下步骤作为解决方法: 1 从家里运行并在 sys-mods 中获取所需的任何模块。2 回到办公室后,手动将模块上传到测试服务器上的 sys-mods。显然,这不是运行任何东西的正常方式。

4

4 回答 4

1

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

编辑您的 vertx.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>(){...});
于 2014-10-06T14:43:36.470 回答
0

以@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);
于 2019-06-27T17:02:19.080 回答
0

我使用 vertx 3.8.0

                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();
于 2019-08-05T11:01:01.927 回答
-2

To set the proxy, edit vertx.bat (if you are on Windows) and add

set JVM_OPTS=-Dhttp.proxyHost=xxxx -Dhttp.proxyPort=xxxx
于 2014-07-17T05:58:24.400 回答