2012-07-11 18 views
5

मैं एक ऐसा टूल ढूंढने की कोशिश कर रहा हूं जो मुझे मल्टीपार्ट/फॉर्म-डेटा पोस्ट अनुरोध का परीक्षण करने और अनुरोध को ट्विक करने की अनुमति देगा। विशेष रूप से, मैं सामग्री प्रकार शीर्षक में सेमी-कोलन के अभाव/उपस्थिति का परीक्षण करना चाहते:मल्टीपार्ट/फॉर्म-डेटा का परीक्षण कैसे करें POST अनुरोध

multipart/form-data; boundary=140f0f40c9f411e19b230800200c9a66 

हम एक ग्राहक है कि एक सेमी-कोलन और हमारे नए सर्वलेट (अपाचे कॉमन्स का उपयोग कर नहीं भेजता है FileUpload) अपलोड की गई फ़ाइल को पार्स नहीं कर सकता है। हमारे सर्वलेट का पुराना संस्करण अनुरोध को स्वीकार/विश्लेषण करने के लिए एक अलग पुस्तकालय विधि का उपयोग करता है और यह फ़ाइल को पार्स कर सकता है। जब तक मैं साबित नहीं कर सकता कि अनुरोध अर्ध-कॉलन समेत सफल होगा, क्लाइंट ऐप के मालिक इसमें कोई बदलाव नहीं करना चाहते हैं।

मैं सर्वलेट के खिलाफ अपने परीक्षण चलाने के लिए curl का उपयोग कर रहा हूं, लेकिन मैं सेमी-कोलन को बाहर करने के लिए उत्पन्न अनुरोध को ट्विक नहीं कर सकता। मैं फ़ायरफ़ॉक्स और फ़िडलर के लिए पोस्टर ऐड-ऑन के लिए एक परीक्षण पोस्ट अनुरोध उत्पन्न करने के लिए कोशिश की है, लेकिन वे इस त्रुटि में परिणाम:

org.apache.commons.fileupload.FileUploadException: Stream ended unexpectedly 

किसी को भी एक तरह से सफलतापूर्वक एक अपलोड की गई साथ एक बहुखण्डीय/फार्म-डेटा पोस्ट अनुरोध परीक्षण करने के लिए मिल गया है फाइल?

उत्तर

1

आप इन पुस्तकालयों के परीक्षण के लिए curl उपयोग कर सकते हैं, यहाँ एक उदाहरण है एक बहुखण्डीय/फार्म-डेटा पोस्ट का उपयोग कर: https://stackoverflow.com/a/10765244/72176

एक बात मैं कर्ल की तरह एक कमांड लाइन उपकरण के बारे में की तरह यह दोहराने के लिए आसान है है (बैश में , & दर्ज करें), और आप बाद में परीक्षण सहेज सकते हैं।

संपादित करें: कस्टम हेडर भेजना निश्चित रूप से संभव है जिसे आप परीक्षण करना चाहते हैं। कुंजी उन तरीकों से कर्ल के कच्चे आदेशों का उपयोग करना है जो आपके लिए अनुरोध प्रारूपित करते हैं। कच्चे हेडर में पास करने के लिए -H का उपयोग करें, और --data-binary का उपयोग लाइन अंतराल को बदलने के बिना फ़ाइल में पास करने के लिए करें (मल्टीपार्ट/फॉर्म-डेटा के लिए बहुत महत्वपूर्ण है जो में सीआरएलएफ लाइन समाप्ति होना चाहिए)। यहाँ एक उदाहरण है:

curl -X POST -H "Content-Type: multipart/form-data; boundary=----------------------------4ebf00fbcf09" --data-binary @test.txt http://localhost:3000/test 
अगर यह मध्यस्थ फ़ाइल का उपयोग नहीं अधिक सुविधाजनक है की

, आप इसे इतना की तरह एक पंक्ति लिख सकते हैं:

curl -X POST -H "Content-Type: multipart/form-data; boundary=----------------------------4ebf00fbcf09" -d $'------------------------------4ebf00fbcf09\r\nContent-Disposition: form-data; name="example"\r\n\r\ntest\r\n------------------------------4ebf00fbcf09--\r\n' http://localhost:3000/test 

इन 2 उदाहरण अर्धविराम शामिल हैं, लेकिन आप निकाल सकते हैं यह आवश्यकतानुसार।

+0

मैं कर्ल का उपयोग करता/करती हूं, लेकिन जैसा कि मेरे प्रश्न में बताया गया है, मैं अनुरोध हेडर डेटा को ट्वीव करने के लिए इसका उपयोग नहीं कर सका। – sdoca

+0

मैंने अपना जवाब अपडेट कर लिया है, मुझे पूरा यकीन है कि आप ऐसा कर सकते हैं। सुविधा प्रपत्र विधियों से बचें, और सीधे हेडर निर्दिष्ट करें। –

+0

धन्यवाद। मुझे अब tweaking करने की जरूरत नहीं है, लेकिन यह जानना अच्छा है कि आवश्यकता फिर से उत्पन्न होने पर एक और विकल्प हो सकता है। – sdoca