我在服务器端调试clientabort sockettimeout读取异常,同时通过vertx应用程序内的https客户端调用rest服务。如果我调用http设置,它可以正常工作。
我在vertx中得到200 ok并且没有得到任何数据。而且我得到连接是在vertx中关闭错误。
知道为什么会这样。帮助赞赏。
代码:
final HttpClient httpClient1 = vertx.createHttpClient(
new HttpClientOptions()
.setDefaultHost("localhost")
.setDefaultPort(8443)
.setSsl(true)
.setKeepAlive(true)
.setMaxPoolSize(100)
.setTrustAll(true)
);
HttpClientRequest req = httpClient1.request(HttpMethod.POST, "/api/test/");
req.headers()
.set("Content-Length","10000000")
.set("Content-Type","application/json")
.set("Cache-Control", "no-transform, max-age=0");
Buffer body=Buffer.buffer("Hello World");
req.write(body);
答案 0 :(得分:0)
这不是发送请求的方式 希望工作范例可以帮到你。
服务器:
final Vertx vertx = Vertx.vertx();
vertx.createHttpServer().requestHandler((c) -> {
c.bodyHandler(b -> {
System.out.println(b.toString());
});
c.response().end("ok");
}).listen(8443);
客户端:
final HttpClient client = vertx.createHttpClient(
new HttpClientOptions()
.setDefaultHost("localhost")
.setDefaultPort(8443));
client.request(HttpMethod.POST, "/", (r) -> {
System.out.println("Got response");
}).putHeader("Content-Length", Integer.toString("Hello".length()))
.write("Hello").end();
两个重要说明:您必须使用.request()
结束.end()
,并且必须正确设置Content-Length
。