2016-11-01 54 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 - 你知道如何在未來包裝這個嗎? –