2010-06-02 23 views
7

वहाँ अपाचे उपयोगिता है कि क्वेरी स्ट्रिंग और कुछ एन्कोडिंग लेता है और कुंजी के मानचित्र वापसी है, मूल्य [] यूआरएल डीकोड?पार्स क्वेरी स्ट्रिंग

+0

क्या आपके पास HttpServletRequest की getParameter विधि के माध्यम से पुनर्प्राप्त मूल्यों के साथ कुछ प्रकार की एन्कोडिंग समस्या है? – Powerlord

+0

@ पावरलोर्ड शायद वह सर्वलेट पर्यावरण पर नहीं है। –

+1

@ जैमहब्लुटज़ेल [टैग: टोमकैट] टैग में है। – Powerlord

उत्तर

7

यह पदावनत है, लेकिन आप HttpUtils.parseQueryString उपयोग कर सकते हैं।

यह मूल्यों के पैरामीटर नामों को मानचित्र करता है। यदि पैरामीटर एक से अधिक बार प्रकट होता है, तो मान एक सरणी है।

संपादित करें: उपरोक्त विधि बहिष्कृत हो गई है क्योंकि यह आपको वर्ण एन्कोडिंग निर्दिष्ट करने के लिए अनुमति नहीं है।

अपाचे पर HttpClient परियोजना कक्षाएं आप इस लक्ष्य को हासिल करने की जरूरत है है।

उपयोग URIUtil.decode(String data, String encoding) क्वेरी स्ट्रिंग डिकोड करने के लिए।

फिर ParameterParser.parse(String query, char separator)NameValuePair रों की एक सूची प्राप्त करने के लिए। इसके बाद आप इन्हें एक कॉमन्स संग्रह MultiMap में डाल सकते हैं, जो पैरामीटर नाम से कुंजी है। (आप एक नियमित हैश मैप का उपयोग कर सकते हैं, लेकिन इसमें प्रति मान एकाधिक मानों को संभालने के लिए और कोड शामिल हैं।)

+2

http://www.docjar.com/docs/api/org/apache/catalina/util/RequestUtil.html#parseParameters%28Map,%20byte,%20String%29 के बारे में क्या? –

+0

हां, यही वह है जो मुझे लिखना था! :) – mdma

+0

लेकिन, मैंने अपने ऐप को टॉमकैट libs पर निर्भर नहीं किया, क्या यह और कहां सामने आया? –

7

यदि आप एचटीपी क्लाइंट के 4.x संस्करण का उपयोग कर रहे हैं, तो आप URLEncodedUtils.parse() का उपयोग करना चाहेंगे। यह एक यूआरआई (या स्ट्रिंग + वर्णसेट) लेता है और नाम ValuePairs की एक सूची देता है।

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