2014-04-12 14 views
10

में POST अनुरोध में भेजे गए अनुरोध निकाय स्ट्रिंग को पुनर्प्राप्त करें मैं जावा में प्ले फ्रेमवर्क का उपयोग कर रहा हूं। मैं प्ले सर्वर पर POST अनुरोध में भेजे गए पूरे अनुरोध निकाय को पुनर्प्राप्त करना चाहता हूं। मैं उसे कैसे वापस पा सकता हूं?प्ले फ्रेमवर्क जावा

उत्तर

10

play.mvc.Http वर्ग में एक नजर डालें, तो आप यानी (डेटा प्रारूप के आधार पर)

RequestBody body = request().body(); 
MultipartFormData formData = request().body().asMultipartFormData(); 
Map<String, String[]> params = request().body().asFormUrlEncoded(); 
JsonNode json = request().body().asJson(); 
String bodyText = request().body().asText(); 

वहाँ कुछ विकल्प हैं आप कमांडलाइन से कर्ल का उपयोग request().body().asText() यानी परीक्षण कर सकते हैं:

curl -H "Content-Type: text/plain" -d 'Hello world !' http://domain.com/your-post-action 

... या ब्राउजर प्लगइन की तरह कुछ टूल का उपयोग करना: https://chrome.google.com/webstore/detail/advanced-rest-client/hgmloofddffdnphfgcellkdfbfbjeloo

+0

मैं कच्चे शरीर स्ट्रिंग प्राप्त करना चाहते है। इसे कैसे प्राप्त किया जा सकता है? – Bourne

+0

आपको उल्लिखित वर्ग में देखना चाहिए: पी 'स्ट्रिंग बॉडीटेक्स्ट = अनुरोध()। बॉडी()। AsText();' – biesior

+3

मैंने कोशिश की है लेकिन यह शून्य – Bourne

2

यदि आप अनुरोध पर निम्न कोड कॉल करते हैं;

String bodyText = request().body().asText(); 

bodyText यदि Content-Type हैडर आवेदन/json

है वहाँ प्रदान की नियंत्रक API का उपयोग करके सिर्फ अगर Content-Type हैडर आवेदन है JSON टेक्स्ट जाने का कोई तरीका नहीं है अशक्त हो जाएगा/पहले एक JsonNode

तो सबसे अच्छा तरीका यह करने के लिए परिवर्तित करता है, तो आवेदन/json अपने Content-Type हैडर है बिना json

String bodyText = request().body().asJSON().toString(); 

है यह एक पर असफल है फ्रेमवर्क के हिस्से को चलाएं, क्योंकि उनके पास अनुरोध निकाय को स्ट्रिंग के रूप में प्राप्त करने का कोई तरीका होना चाहिए, इससे कोई फर्क नहीं पड़ता कि सामग्री-प्रकार हेडर क्या है।

9

प्ले फ्रेमवर्क 2.3 यह कच्चे json पाठ भी प्राप्त करने के लिए संभव है Content-Type हैडर यह किसी भी जावा विशिष्ट डेटा संरचनाओं में रूपांतरित किए बिना आवेदन/json

def postMethod = Action(parse.tolerantText) { request => 
    val txt = request.body 
} 
+0

वास्तव में यह एकमात्र सही उत्तर है – aveic

+0

लेकिन यह नहीं है जावा में काम – M156

+2

शायद इससे मदद मिलेगी: https://www.ricardclau.com/2015/06/access-to-the-raw-request-body-in-play-framework/ –

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