Как получить содержимое заголовка при получении ответа 100-продолжение с сервера, используя Vert.x? - PullRequest
0 голосов
/ 20 октября 2019

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-продолжение с сервера.

Я хотел бы исправить это с помощьюминимум модификаций, какие-нибудь подсказки?

Джерард

...