https://jmarshall.com/easy/http/#http1.1c4
Мы можем добавить любой заголовок при отправке промежуточного ответа с продолжением 100.
Но мы можем видеть в коде Vert.x, что когда он собирается вызвать continueHandler
содержимое ответа игнорируется, обрывается:
protected void doHandleResponse(HttpClientResponseImpl resp, long timeoutMs) {
if (reset == null) {
int statusCode = resp.statusCode();
if (followRedirects > 0 && statusCode >= 300 && statusCode < 400) {
Future<HttpClientRequest> next = client.redirectHandler().apply(resp);
if (next != null) {
next.setHandler(ar -> {
if (ar.succeeded()) {
handleNextRequest((HttpClientRequestImpl) ar.result(), timeoutMs);
} else {
handleException(ar.cause());
}
});
return;
}
}
if (statusCode == 100) {
if (continueHandler != null) {
continueHandler.handle(null);
}
} else {
if (respHandler != null) {
respHandler.handle(resp);
}
if (endHandler != null) {
endHandler.handle(null);
}
}
}
}
Очевидно, потому что обработчик не принимает никаких параметров.
Ответ перед вызовом разорван:
private void checkHandleResponse() {
HttpClientResponseImpl resp;
synchronized (this) {
if (response != null) {
if (paused) {
return;
}
resp = response;
response = null;
} else {
return;
}
}
doHandleResponse(resp);
}
Спецификация не точна в этом отношении, хотя я не нашел точных подробностей об официальном содержании ответа 100-продолжение с сервера.
Я хотел бы исправить это с помощьюминимум модификаций, какие-нибудь подсказки?
Джерард