我有一个内部端点,我试图通过Java的Vert.x Web客户端向GET
发送请求。到目前为止,我无法成功取回任何数据。
如果我对端点进行cURL,它就可以正常工作(这些是内部端点)。我尝试向发送GET
请求的服务需要一些标头和数据:
curl -H "Accept:application/json" -H "Content-Type:application/json" -H "alpha:192.168.10.20" -d '{"mutate":"*"}' http://my-endpoint.com/api/get-items
但是,如果我尝试在Vert.x的一个路由器端点中使用它,则会收到错误消息:
WebClient webClient = WebClient.create(vertx);
webClient.get("http://my-endpoint.com/api/get-items")
.putHeader("Accept", "application/json")
.putHeader("Content-Type", "application/json")
.putHeader("alpha", "192.168.10.20")
.sendJsonObject(new JsonObject().put("mutate", "*"), ar -> {
if (ar.succeeded()) {
System.out.println("##### WEBCLIENT #####");
System.out.println(ar);
} else {
System.out.println("CAUSE: " + ar.cause().getMessage());
}
});
我从else语句得到的错误消息是:
CAUSE: Connection refused: localhost/127.0.0.1:80
我在做什么错?我一直在使用它作为参考:Vert.x Web Client
=========================================
解决方案
=========================================
我不得不改变
webClient.get("http://my-endpoint.com/api/get-items")
到
webClient.post(80, "my-endpoint.com", "/api/get-items")
还必须在上一行下面添加.as(BodyCodec.jsonArray())
,因为我得到的结果是一个Json数组。