2016-11-01 33 views
0

你好,我正在尝试使用下面的代码在远处的资源上执行一个休息调用。在vertx 3.3.3它与defaulthttpclient(appache)一起使用,但它不是异步的在vertx上使用httpclient时出错

我仍然得到错误: nov。 01年,2016年上午8时15分08秒io.vertx.core.http.impl.HttpClientRequestImpl 坟墓java.net.ConnectException:连接被拒绝:本地主机/ 127.0.0.1:80

final HttpClient httpClient = vertx.createHttpClient(); 

     final HttpGet getRequest = new HttpGet(uri); 

     httpClient.request(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 -> { 
       String message = ""; 
       logger.debug("Output from Server .... \n"); 
       logger.debug(buffer); 
       message = buffer.toString(); 
       apiMethod.setCallingDate(new Date()); 
       apiMethod.setCallingResult(message); 
      }); 
     }).putHeader("content-type", "application/json").end(); 

谁能帮助?

最好的问候,

回答

1

看来你忘了配置客户端的主机和端口来连接,它是使用默认值localhost:80,你可以从异常读取。

你应该做这样的事情:

httpClient.request(GET, "www.yourserver.com", 80, uri, res -> { 
    ... 
}); 

注意uri不是URL所以它应该是这样的:

/api/users?from=5&to=10 

如果你正在寻找一个更紧凑的版本,则你应该使用的是requestAbs方法:

httpClient 
    .requestAbs(GET, "http://www.yourserver.com/api/users?from=5&to=10", res -> { 
    ... 
    }); 
+0

你好保罗感谢评论它似乎使用requestAbs是正确的,但现在我收到一条消息“连接关闭”是否有任何其他参数要更改? – EFOE

+0

@Paulo Lopez - 你知道如何在未来包装这个吗? –