У меня есть следующее как часть сервера http2 undertow. Сервер Undertow версии 2.0.22. Финал
String response = "Hello world";
Undertow server = Undertow.builder()
.setServerOption(UndertowOptions.ENABLE_HTTP2, true)
.addHttpListener(9999, 127.0.0.1)
.setHandler(
exchange ->
{
try
{
exchange.getRequestReceiver().receiveFullBytes((e, m) ->
{
System.out.println("request body test");
String test=new String(m);
System.out.println("request body " + test);
});
System.out.println("request header " + exchange.getRequestHeaders());
System.out.println("request method " + exchange.getRequestMethod());
exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "application/json");
exchange.getResponseSender().send(response);
}
catch (Exception e)
{
e.printStackTrace();
}
})
.build();
server.start();
Со стороны клиента при использовании curl с параметром --http2 он работает, значит на сервере печатается тело запроса.
Но когда из curl я пытаюсь вызвать с помощью --http2-prior-Knowledge, он не идет внутрь exchange.getRequestReceiver (). ReceiveFullBytes ... Таким образом, тело запроса не печатается, а как ответ c stati * hello Мир, который я получаю на стороне клиента.
Я пробовал также с receiveFullString, он не работал.
Мне нужно, чтобы тело запроса было напечатано, чтобы я мог использовать данные для какой-то другой обработки , используя http2-prior-знание. Есть идеи, что мне здесь не хватает?