2012-09-27 13 views
6

के साथ कैसे एक्सेस करें मैं HTTP अनुरोध के सीधे शरीर तक पहुंचने का एक तरीका ढूंढ रहा हूं। असल में, मेरे कोड में मुझे शरीर में अलग-अलग पैरामीटर मिलते हैं और मुझे पहले से ही पता नहीं होता कि मुझे क्या मिलेगा। इसके अलावा मैं जितना संभव हो उतना लचीला होना चाहता हूं: मैं अलग-अलग अनुरोधों से निपट रहा हूं जो भिन्न हो सकते हैं और मैं उन्हें प्रत्येक प्रकार के अनुरोध (GET, POST, ...) के लिए एक ही विधि में संभालना चाहता हूं। क्या रीस्टेसी के साथ इस स्तर की लचीलापन को संभालने का कोई तरीका है? क्या मुझे कुछ और स्विच करना चाहिए?HTTP अनुरोध के शरीर को RESTEasy

+0

मैंने MessageBodyReaderInterceptor का उपयोग करने का प्रयास किया लेकिन मुझे यह भी सुनिश्चित नहीं है कि मैं जो चाहता हूं उसे करने के लिए किया गया है। जहां तक ​​मुझे पता है, आमतौर पर रीस्टेसी के साथ आप पीओजेओ या कई पैरामीटर स्वीकार करने वाले तरीकों को लिखते हैं, लेकिन मैं उन्हें नहीं जानता, इसलिए मैं उन्हें निर्दिष्ट नहीं कर सकता ... – Raffo

उत्तर

5

this answer में दिए गए कोड के अनुसार आप HTTPServletRequest ऑब्जेक्ट तक पहुंच सकते हैं।

एक बार आपके पास HTTPServletRequest ऑब्जेक्ट हो जाने पर आपको अनुरोध निकाय को सामान्य रूप से एक्सेस करने में सक्षम होना चाहिए। एक उदाहरण हो सकता है:

String requestBody = ""; 
StringBuilder stringBuilder = new StringBuilder(); 
BufferedReader bufferedReader = null; 
try { 
    InputStream inputStream = request.getInputStream(); 
    if (inputStream != null) { 
     bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); 
     char[] charBuffer = new char[128]; 
     int bytesRead = -1; 
     while ((bytesRead = bufferedReader.read(charBuffer)) > 0) { 
      stringBuilder.append(charBuffer, 0, bytesRead); 
     } 
    } else { 
     stringBuilder.append(""); 
    } 
} catch (IOException ex) { 
    throw ex; 
} finally { 
    if (bufferedReader != null) { 
     try { 
      bufferedReader.close(); 
     } catch (IOException ex) { 
      throw ex; 
     } 
    } 
} 
requestBody = stringBuilder.toString(); 
संबंधित मुद्दे