使用 Vert.x Web 客户端通过 headers 正确发送 GET 请求
Using Vert.x Web Client to send GET requests properly with headers
我有一个内部端点,我正尝试通过 Vert.x Web 客户端向 Java 发送 GET
请求。到目前为止,我无法成功取回任何数据。
如果我 cURL 端点,它工作得很好(这些是内部端点)。我尝试向其发送 GET
请求的服务需要一些 headers 和数据:
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 数组。
你需要改变
webClient.get("http://my-endpoint.com/api/get-items")
至
webClient.get(80, "my-endpoint.com", "/api/get-items")
我有一个内部端点,我正尝试通过 Vert.x Web 客户端向 Java 发送 GET
请求。到目前为止,我无法成功取回任何数据。
如果我 cURL 端点,它工作得很好(这些是内部端点)。我尝试向其发送 GET
请求的服务需要一些 headers 和数据:
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 数组。
你需要改变
webClient.get("http://my-endpoint.com/api/get-items")
至
webClient.get(80, "my-endpoint.com", "/api/get-items")