java - जावा सर्वलेट में POST अनुरोध से अनुरोध पेलोड प्राप्त करना




http servlets (6)

अनुरोध के निकाय को पढ़ने के लिए getReader() का उपयोग करें

मेरे पास एक जावास्क्रिप्ट लाइब्रेरी है जो मेरे जावा सर्वलेट को POST अनुरोध भेज रही है, लेकिन doPost विधि में, मुझे अनुरोध पेलोड की सामग्री प्राप्त नहीं हो रही है। क्रोम डेवलपर टूल्स में, सभी सामग्री शीर्षलेख टैब में अनुरोध पेलोड अनुभाग में है, और सामग्री वहां है, और मुझे पता है कि POST को DoPost विधि द्वारा प्राप्त किया जा रहा है, लेकिन यह अभी खाली हो गया है।

HttpServletRequest ऑब्जेक्ट के लिए, मैं अनुरोध पेलोड में डेटा किस प्रकार प्राप्त कर सकता हूं?

request.getParameter() करना request.getParameter() या request.getAttributes() दोनों डेटा के बिना समाप्त होते हैं


आप पढ़ने के अनुरोध से बफर रीडर का उपयोग कर सकते हैं

    // Read from request
    StringBuilder buffer = new StringBuilder();
    BufferedReader reader = request.getReader();
    String line;
    while ((line = reader.readLine()) != null) {
        buffer.append(line);
    }
    String data = buffer.toString()

जावा 8 का उपयोग संसाधनों के साथ प्रयास करें:

    StringBuilder stringBuilder = new StringBuilder();
    try(BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(request.getInputStream()))) {
        char[] charBuffer = new char[1024];
        int bytesRead;
        while ((bytesRead = bufferedReader.read(charBuffer)) > 0) {
            stringBuilder.append(charBuffer, 0, bytesRead);
        }
    }

जावा 8 स्ट्रीम

String body = request.getReader().lines()
    .reduce("", (accumulator, actual) -> accumulator + actual);

यदि शरीर की सामग्री जावा 8 में एक स्ट्रिंग है तो आप कर सकते हैं:

String body = request.getReader().lines().collect(Collectors.joining());






post