Vertx客户端获得clientabort异常

时间:2017-06-04 18:25:59

标签: https vert.x

我在服务器端调试clientabort sockettimeout读取异常,同时通过vertx应用程序内的https客户端调用rest服务。如果我调用http设置,它可以正常工作。

我在vertx中得到200 ok并且没有得到任何数据。而且我得到连接是在vertx中关闭错误。

知道为什么会这样。帮助赞赏。

代码:

final HttpClient httpClient1 = vertx.createHttpClient(
    new HttpClientOptions()
    .setDefaultHost("localhost")
    .setDefaultPo‌​rt(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);

1 个答案:

答案 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