2012-03-28 13 views
15

मैं एक scalatra सर्वलेट है:स्केलत्रा में पोस्ट अनुरोध का बॉडी कैसे प्राप्त करें?

post("/asdf") { 
    ??? 
} 

और अपने ग्राहकों के बाद शरीर में xml भेजने के लिए, तो मैं अनुरोध से कच्चे पाठ निकालने के लिए की जरूरत है। मैं इसे स्केलत्रा में कैसे कर सकता हूं?

उत्तर

20
request.body 

में विरोधी एक्सएमएल एकता को देखने देता है आप अनुरोध के लिए पहुँच: बाद के हैं, तो नीचे दिए गए चाल करना चाहिए तन। तो यदि यह एक्सएमएल है और आप इसे नोडसेक के रूप में चाहते हैं, तो करें:

XML.loadString(request.body) 
+0

+1, "उत्तर" उत्तर – virtualeyes

+0

सुनिश्चित करें कि सामग्री-प्रकार 'एप्लिकेशन/एक्स-www-form-urlencoded' नहीं है (https://groups.google.com/forum/#!topic/scalatra-user/lApjIJXiNqg पर रॉस का उत्तर देखें) – uthomas

4

+1, अच्छा सवाल

तो getInputStream और getContentLength पहुँच प्रदान करता है, तो पोस्ट शरीर में ही xml स्ट्रिंग है आप एक Scalatra मार्ग के भीतर के माध्यम से "अनुरोध" कीवर्ड सर्वलेट अनुरोध करने के लिए उपयोग कर सकते है; i.e. क्लाइंट नाम फ़ॉर्म में संग्रहीत एक्सएमएल को फॉर्म पोस्ट के हिस्से के रूप में पास कर रहा है।

post("/foo" && request.getHeader("Accept-Encoding") contains "application/xml") { 
    val xml = XML.fromString(params("xml-param-field-name")) 
} 

आप स्ट्रिंग से पार्स ऊपर का उपयोग करना चाहते हैं, तो Scalatra Book

+0

स्कैला के लिए नया हूं और यह ^^ को संकलन त्रुटि प्राप्त कर रहा है &&/include। –

+0

@ gursahib.singh.sahni यकीन नहीं है, मैंने स्केलत्र का उपयोग करने के 5 साल बाद किया है ;-) शायद उनके [गिटर चैनल] (https://gitter.im/scalatra/scalatra) – virtualeyes

संबंधित मुद्दे