Vertx clientHttp:执行休息调用时连接已关闭

时间:2016-11-02 06:34:10

标签: java rest vert.x vertx-httpclient

3.3我尝试以异步方式执行rest api调用。因为那个我'尝试使用httpClient,`final HttpClient httpClient = vertx.createHttpClient();

        new HttpGet(uri);

        httpClient.requestAbs(apiMethod.getHttpMethod(), uri, resultHandler -> {
            resultHandler.statusCode();
            if (resultHandler.statusCode() == 200) {
                environment.setStatus(ApiStatus.OK);
                apiMethod.setStatus(ApiStatus.OK);
            } else {
                environment.setStatus(ApiStatus.ERROR);
                apiMethod.setStatus(ApiStatus.ERROR);
            }
            resultHandler.bodyHandler(buffer -> {
                logger.debug("Output from Server .... \n");
                buffer.toString();
            });
        }).exceptionHandler(handlerExc -> {
            logger.error(" handle exception:" + handlerExc.getMessage(), handlerExc.getCause());
            apiMethod.setStatus(ApiStatus.ERROR);
            environment.setStatus(ApiStatus.ERROR);
            apiMethod.setCallingResult(handlerExc.getMessage());

        }).putHeader("content-type", "application/json").end();`

我仍然收到错误:连接已关闭。 当我卷曲请求或使用我的浏览器/邮递员它工作正常。 任何人都可以知道我错在哪里?这是网络问题吗? 最好的问候,

2 个答案:

答案 0 :(得分:1)

我只是在代理后面尝试,我收到另一个错误,导致我添加此行 if (url.getProtocol().equals("https")) { options.setDefaultHost(host); options.setSsl(true); port = 443; } final ProxyOptions proxyOptions = new ProxyOptions().setHost(proxyUrl).setPort(443); options.setProxyOptions(proxyOptions); options.setDefaultPort(port); logger.debug("execution appel"); final HttpClient httpClient = vertx.createHttpClient(options); 我在公司代理服务器后面,如果您遇到代理问题,请找到您的代理网址和端口进行设置

答案 1 :(得分:1)

这里是完整的代码

    final HttpClientOptions options = new HttpClientOptions();
    options.setTrustAll(true);
    final String proxyUrl = "yourProxyUrl.net";
    options.setSsl(true);
    int port = 443;
    final ProxyOptions proxyOptions = new ProxyOptions().setHost(proxyUrl).setPort(port);
    options.setProxyOptions(proxyOptions);
    options.setDefaultPort(port);
    HttpClient httpClient= vertx.createHttpClient(options);

    httpClient.requestAbs(apiMethod.getHttpMethod(), uri, resultHandler -> {
        resultHandler.statusCode();
        if (resultHandler.statusCode() == 200) {
            environment.setStatus(ApiStatus.OK);
            apiMethod.setStatus(ApiStatus.OK);
        } else {
            environment.setStatus(ApiStatus.ERROR);
            apiMethod.setStatus(ApiStatus.ERROR);
        }
        resultHandler.bodyHandler(buffer -> {
            logger.debug("Output from Server .... \n");
            buffer.toString();
        });
    }).exceptionHandler(handlerExc -> {
        logger.error(" handle exception:" + handlerExc.getMessage(), handlerExc.getCause());
        apiMethod.setStatus(ApiStatus.ERROR);
        environment.setStatus(ApiStatus.ERROR);
        apiMethod.setCallingResult(handlerExc.getMessage());

    }).putHeader("content-type", "application/json").end();