में संशोधित इनपुटस्ट्रीम तक पहुंचने का तरीका जानने में असमर्थ, जैसा कि How to use Jersey interceptors to get request body में चर्चा की गई है, मैं EntainInputStream को ContainerRequestFilter में संशोधित कर रहा हूं।जर्सी इनपुटस्ट्रीम फ़िल्टर में संशोधित है। जर्सी संसाधन
public filter(ContainerRequest request){
ByteArrayOutputStream out = new ByteArrayOutputStream();
InputStream in = request.getEntityInputStream();
try{
Readerwriter.writeTo(in, out);
byte[] requestEntity = out.toByteArray();
// DO SOMETHING WITH BYTES HERE
request.setEntityInputStream(new ByteArrayInputStream(requestEntity));
}/// error handling code here
}
हालांकि, बाद में मैं संशोधित इनपुटस्ट्रीम तक पहुंचने का तरीका नहीं समझ सकता। मैं संसाधन में ServletContext प्राप्त कर सकता हूं, लेकिन मैं यह नहीं समझ सकता कि ऑब्जेक्ट को वास्तव में फ़िल्टर में कैसे संशोधित किया गया है, ContainerRequest।
क्या मैं ऐसा कुछ कर सकता हूं? जर्सी ऊपर से शुरू नहीं कर सकते हैं जब मैं इस प्रयास करें:
@Post
@Path("/test")
public Response test(@Context ContainerRequest cr){
// blah blah
return....
}
जर्सी त्रुटि: विधि सार्वजनिक javax.ws.rs.core.Response example.TestController.test (com.sun के लिए
गुम निर्भरता। jersey.spi.container.ContainerRequest), संसाधन के POST के साथ एनोटेटेड, क्लास उदाहरण। testController, मान्य संसाधन विधि के रूप में पहचाना नहीं गया है।
मैं जर्सी, 1.8 के पुराने संस्करण पर फंस गया हूं, इसलिए मुझे यकीन नहीं है कि यह समस्या का हिस्सा है या नहीं।