在代理后面运行vertx

时间:2014-01-28 20:28:00

标签: java proxy vert.x

有没有人试图在公司代理中使用vertx bi?我已经尝试了任何可能的方法来向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.0-final(第一次运行)成功运行“vertx run hello.js”

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

4 个答案:

答案 0 :(得分:0)

要设置代理,请编辑vertx.bat(如果您在Windows上)并添加

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

答案 1 :(得分:0)

我有类似的问题。我发现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>(){...});

答案 2 :(得分: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);

答案 3 :(得分: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();