【发布时间】:2017-06-04 18:25:59
【问题描述】:
在通过 vertx 应用程序内的 https 客户端调用休息服务时,我在服务器端收到 clientabort sockettimeout 读取异常。如果我调用 http setvice,它可以正常工作。
我在 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);
【问题讨论】:
-
请分享您的代码。
-
最终 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.buffer("Hello World");req.write(body);
-
为什么将
Content-Length设置为10000000?它必须等于身体的大小。你在request上调用end方法吗?