2011-09-21 8 views
5

के साथ एक यूआरएल में एन्कोडिंग पैरामीटर मानों को मुझे URL में पैरामीटर मानों को एन्कोड करने की आवश्यकता है। http://localhost:8080/...जावा

यह सांकेतिक शब्दों में बदलना होगा:

URLEncoder.encode(url, "UTF-8"); 
एक ऐसा URL के लिए

: ": //" अगर मैं निम्नलिखित का उपयोग आदि क्या मैं जरूरत ही से शुरू पैरामीटर के मान के लिए एन्कोडिंग है सब यूआरएल स्ट्रिंग इस मामले में तो:

http://localhost/?q=blah&d=blah

मैं केवल "blah" 2 पैरामीटर मान (बेशक n मापदंडों के लिए) में इनकोडिंग चाहते हैं।

आपका सबसे अच्छा तरीका क्या है?

धन्यवाद

यादृच्छिक करें

उत्तर

5

आप एक गलत तरीके से URLEncoder उपयोग कर रहे हैं। आपको प्रत्येक पैरामीटर मान को अलग से एन्कोड करना होगा और फिर यूआरएल को एक साथ इकट्ठा करना होगा।

उदाहरण


String url = "http://localhost/?q=" + URLEncoder.encode ("blah", "UTF-8") + "&d=" + URLEncoder.encode ("blah", "UTF-8"); 

+0

हाँ मैं यह पता है, समस्या यह है कि मैं एक मिल गया यूआरएल पहले से ही "किया गया" है और मेरे पास – Randomize

+0

उत्पन्न करने वाले कोड को बदलने का कोई तरीका नहीं है, फिर आपको इसे एन्कोड करने की आवश्यकता क्यों है? क्या इसमें गैर ASCII वर्ण हैं? –

+1

फिर आपको 'यूआरएल' बनाने की आवश्यकता होगी और यदि आप यूआरएल की वैधता पर भरोसा रखते हैं तो पैराम (या पहले 'पर विभाजित करें), उन्हें' & 'पर विभाजित करें (यदि आप यह नहीं चाहते हैं एन्कोडेड), उन्हें एन्कोड करें, फिर इसे पुनर्निर्माण करें। –

2

http://localhost/hello/sample?param=bla जैसी URL के लिए के लिए, आप (जावा के java.net.URI वर्ग से) इस इस्तेमाल कर सकते हैं:

URI uri = new URI("http", "localhost", "/hello/sample", "param=bla", null); 
String url = uri.toASCIIString(); 
+0

इस तरह आपको विशेष वर्णों को एन्कोड करने के लिए URLEncoder का उपयोग करके क्वेरी स्ट्रिंग को प्रीसेट करना होगा। और जैसा कि यह पता चला है कि रैंडमाइज़ में इनपुट के रूप में पूरा यूआरएल है, न कि इसके हिस्सों। –

+0

ठीक है, यूआरएल को ऐसे हिस्सों में आसानी से टूटा जा सकता है (विभाजित) और साथ में पारित किया जा सकता है। – Saket

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

  • कोई संबंधित समस्या नहीं^_^