Ben JAX-RS istek ve yanıt ayrıntılarını günlüğe filtre, böyle bir şey günlüğü vardır:Oku JAX-RS vücut inputStream iki kez
public class LoggingFilter implements ContainerRequestFilter, ContainerResponseFilter {
@Override
public void filter(final ContainerRequestContext requestContext) throws IOException {
...
String body = getBody(request);
...
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("request: {}", httpRequest);
}
}
}
getBody()
yöntem InputStream
vücut içeriği okur ama gerek Bazı hile yapmak çünkü bu akışı sıfırlayamıyorum.
private String getBody(final ContainerRequestContext requestContext) {
try {
byte[] body = IOUtils.toByteArray(requestContext.getEntityStream());
InputStream stream = new ByteArrayInputStream(body);
requestContext.setEntityStream(stream);
return new String(body);
} catch (IOException e) {
return null;
}
}
vücut içeriğini okumak için daha iyi bir yolu var mı: Bu küçük hile olmadan benim dinlenme yöntemler her zaman boş istek gövdesi içeriği almak?
Bkz. [Bağlantı] bölümündeki Kapsüller ve Filtreler bölümü (https://dennis-xlc.gitbooks.io/restful-java-with-jax-rs-2-0-2rd-edition/en/part1/chapter12 /reader_and_writer_interceptors.html) – Gautam