У меня есть сторонняя служба, звонящая в мою конечную точку JaxRS.Это Content-Length
неверно, фактически на 3 - 10 символов меньше всей полезной нагрузки сообщения.Мне нужно получить полную полезную нагрузку на стороне сервера.
Я создал ReaderInterceptor, чтобы попытаться изменить или удалить заголовок Content-Length
.Тем не менее, когда я читаю поток, он все равно будет давать мне только количество байтов, первоначально в Content-Length
.
, которое я тестировал с различными формами из Postman, и оно очень согласованно.
Как мне перейти к необработанному входному потоку, не ограниченному базовой библиотекой, к начальному Content-Length
значению?
Использование InputStream или String в параметрах @Post
не меняет результаты, поэтомуиспользование высокоприоритетного ReaderInterceptor.
@Provider
@Priority(0)
public class MyReaderInterceptor implements ReaderInterceptor {
@Override
public Object aroundReadFrom(final ReaderInterceptorContext context) throws IOException, WebApplicationException {
context.getHeaders().remove("Content-Length");
final InputStream inputStream = context.getInputStream();
final byte[] bytes = new byte[inputStream.available()];
final Integer sizeRead = inputStream.read(bytes);
final String body = new String(bytes);
context.setInputStream(new ByteArrayInputStream(body.getBytes()));
return context.proceed();
}
}