在 vertx 上使用 httpclient 时出错

EFO*_*FOE 2 java rest networking vert.x

您好,我正在尝试使用下面的代码对远程资源执行休息调用。在 vertx 3.3.3 上它与 defaulthttpclient (appache) 一起工作,但它不是异步的

我仍然收到错误:nov。2016 年 1 月 1 日上午 8:15:08 io.vertx.core.http.impl.HttpClientRequestImpl 严重:java.net.ConnectException:连接被拒绝:localhost/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();
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮忙吗?

此致,

Pau*_*pes 5

您似乎忘记配置要连接到的主机和端口的客户端,并且它正在使用默认值,localhost:80因为您可以从异常中读取。

你应该做这样的事情:

httpClient.request(GET, "www.yourserver.com", 80, uri, res -> {
  ...
});
Run Code Online (Sandbox Code Playgroud)

请注意,这uri不是一个,URL所以它应该是这样的:

/api/users?from=5&to=10
Run Code Online (Sandbox Code Playgroud)

如果您正在寻找更紧凑的版本,那么您应该使用的requestAbs方法是:

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