2014-10-22 29 views
6

मैं ब्राउज़र से अपने सर्वर (स्थानीय होस्ट) पर POST अनुरोध भेजने की कोशिश कर रहा हूं। मेरा अनुरोध यूआरएल है:HTTP अनुरोध शीर्षलेख पार्सिंग त्रुटि

http://localhost:8080/myPath/myServlet?requestData={ .......//Json String......}; 

requestData एक json स्ट्रिंग (। मैं इस प्रयोजन के लिए GSON उपयोग कर रहा हूँ) सब कुछ ठीक काम कर रहा है जब तक json स्ट्रिंग में डेटा एक विशेष सीमा से अधिक है। कहें, मैं जेसन स्ट्रिंग में ऑब्जेक्ट्स की सरणी भेज रहा हूं। सूची में वस्तुओं की संख्या से अधिक 67 तो मैं त्रुटि निम्न हो, तो:

AM org.apache.coyote.http11.AbstractHttp11Processor process 
INFO: Error parsing HTTP request header 
Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level. 

क्यों है ऐसा? मैं पूरी तरह उलझन में हूँ। ऐसा क्यों होता है और इसे ठीक करने के लिए क्या करने की आवश्यकता है? मैं इसके पीछे कारण समझना चाहता हूं, क्योंकि मुझे समझ में नहीं आता है कि विशेष रूप से वस्तुओं की संख्या के बाद यह अचानक काम करना बंद कर देता है और मुझे यह त्रुटि मेरे कंसोल में मिलती है।

धन्यवाद।

+0

यह एक के बजाय प्राप्त पोस्ट हो रहा है ... – user3280180

+0

ऐसा लगता है कि आप जेएसएन स्ट्रिंग को 'जीईटी' पैरामीटर के रूप में पास कर रहे हैं, न कि 'POST'। – damgad

+0

संभावित डुप्लिकेट [विभिन्न ब्राउज़रों में यूआरएल की अधिकतम लंबाई क्या है?] (Http://stackoverflow.com/questions/417142/what-is-the- अधिकतम- लम्बाई-of-a-url-in- अलग -ब्रोसर) – Whymarrh

उत्तर

4

ऐसा लगता है कि आप गलत तरीके से POST का उपयोग कर रहे हैं। यद्यपि आप POST का उपयोग कर रहे हैं, आप जेएसओएन को अनुरोध पैरामीटर के रूप में भेज रहे हैं जो कि जीईटी शैली है। POST का उपयोग करते समय आपको सामग्री को बॉडी अनुरोध के रूप में भेजना चाहिए। इस मामले में कोई उचित आकार सीमा मौजूद नहीं है।

+0

क्या आप दिखा सकते हैं कि इसे कैसे किया जाना चाहिए? – user3686864

+1

कृपया इस ट्यूटोरियल पर एक नज़र डालें: http://www.mkyong.com/java/how-to-send-http-request-getpost-in-java/ – AlexR

+0

मैं इसे ब्राउज़र से कैसे भेज सकता हूं? – user3686864

4

मुझे एक समान समस्या थी, मैं अनुरोध निकाय में डेटा के साथ एक POST अनुरोध (फ़ायरफ़ॉक्स के लिए RESTClient प्लगइन का उपयोग कर) भेज रहा था और एक ही संदेश प्राप्त कर रहा था।

मेरे मामले में ऐसा इसलिए हुआ क्योंकि मैं स्थानीय टॉमकैट उदाहरण में HTTPS प्रोटोकॉल का उपयोग करने का प्रयास कर रहा था जहां HTTPS कॉन्फ़िगर नहीं किया गया था।

+0

धन्यवाद - यह मेरी समस्या थी। – Simon

1

मेरे मामले समस्या में सुरक्षा के मुद्दों की वजह से किया गया था, मैं प्रमाणीकरण के लिए CSFR इस्तेमाल किया, और मेरे सभी पोस्ट रूपों _csrf

<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/> 
0

साथ निवेश करना चाहिए था IMHO हेडर पार्स करने की समस्या कई कारणों की वजह से हो सकता है ।

मेरे मामले में यह तथ्य के कारण किया गया है कि निम्न XML पारित किया गया था:

<soapenv:Header/> 

खाली हैडर तत्व SoapUI द्वारा उत्पन्न किया गया था। डब्ल्यूएस के एक्सएमएल से <soapenv:Header/> को हटाने के बाद सबकुछ ठीक था।

-1

मैं पहले से गंभीर प्रश्नों का उत्तर देने के लिए क्षमा चाहता हूं।

1.Maybe यह विशेष characters.You की वजह से इस यूआरएल से विवरण प्राप्त कर सकते https://bz.apache.org/bugzilla/show_bug.cgi?id=60594

द्वारा इसे हल:।

encodeURIComponent(JSON.stringify(data)) 

या 7.0.67 या कम करने के लिए अपने बिल्ला संस्करण बदल जाते हैं। डेवलपर्स की राय के मुताबिक, निम्नलिखित संस्करणों में टोमकैट डेवलपर्स ने '|, {,}' को अनुमति देने के विकल्प को सेट किया है। विवरण प्राप्त http://tomcat.apache.org/tomcat-8.0-doc/config/systemprops.html#Other

नया वातावरण चर में शामिल किया जाएगा: - 9.0.0.M18 बाद

  • 8,5 के लिए 8.5.x के लिए ट्रंक।12 के बाद

  • 8.0.42 के लिए 8.0.x के बाद

  • 7.0.76 onwards2 के लिए 7.0.x।

एक और कारण हो सकता है कि अनुरोध शीर्षलेख बहुत बड़ा हो। आप server.xml को संशोधित करके इसे हल कर सकते हैं।

<Connector port="8080" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" 

redirectPort = "8443" acceptCount = "100" connectiontimeout = "20000" disableUploadTimeout = "true" />

यह आप के लिए काम करता है आशा है!

+0

प्रश्न पूछने के दौरान उदाहरण जोड़ने का प्रयास करें ताकि व्यक्ति पूछने के लिए इसे और अधिक सहायक बना दिया जा सके। –

+0

यह प्रश्न का उत्तर नहीं प्रदान करता है। एक बार आपके पास पर्याप्त [प्रतिष्ठा] (https://stackoverflow.com/help/whats-reputation) हो जाने पर आप [किसी भी पोस्ट पर टिप्पणी कर सकेंगे] (https://stackoverflow.com/help/privileges/comment); इसके बजाय, [उन उत्तरों को प्रदान करें जिन्हें पूछताछ से स्पष्टीकरण की आवश्यकता नहीं है] (https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-can- i-कर-बजाय)। - [समीक्षा से] (/ समीक्षा/कम गुणवत्ता वाली पोस्ट/17 9 24775) – Bnrdo

+0

क्षमा करें। मैंने जो कुछ पता है उसका विवरण जोड़ा है। –

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