मैं मुसीबत यूआरआई के लिए एक URL एन्कोडिंग आ रही हैं:यूआरएल एक "% 3 डी" को "% 253D" बदलता है
mUrl = "A string url that needs to be encoded for use in a new HttpGet()";
URL url = new URL(mUrl);
URI uri = new URI(url.getProtocol(), url.getAuthority(), url.getPath(),
url.getQuery(), null);
यह मैं क्या निम्न URL के लिए उम्मीद भी नहीं करता है:
स्ट्रिंग में पासिंग:
http://m.bloomingdales.com/img?url=http%3A%2F%2Fimages.bloomingdales.com%2Fis%2Fimage%2FBLM%2Fproducts%2F3%2Foptimized%2F1140443_fpx.tif%3Fwid%3D52%26qlt%3D90%2C0%26layer%3Dcomp%26op_sharpen%3D0%26resMode%3Dsharp2%26op_usm%3D0.7%2C1.0%2C0.5%2C0%26fmt%3Djpeg&ttl=30d
के रूप में बाहर आता है:
http://m.bloomingdales.com/img?url=http%253A%252F%252Fimages.bloomingdales.com%252Fis%252Fimage%252FBLM%252Fproducts%252F3%252Foptimized%252F1140443_fpx.tif%253Fwid%253D52%2526qlt%253D90%252C0%2526layer%253Dcomp%2526op_sharpen%253D0%2526resMode%253Dsharp2%2526op_usm%253D0.7%252C1.0%252C0.5%252C0%2526fmt%253Djpeg&ttl=30d
कौन सा टूट गया है। उदाहरण के लिए, %3D
%253D
में बदल गया है ऐसा लगता है कि यह पहले से ही स्ट्रिंग में% s के लिए रहस्यमय कुछ कर रहा है।
क्या चल रहा है और मैं यहां क्या गलत कर रहा हूं? जब यह यूआरएल पार्स
की अनुमति है, यह समझ में आता है, लिखने के लिए धन्यवाद। यूआरएल को एचटीएमएल कोड से खींचा जा रहा है, इसलिए मुझे लगता है कि उन्हें पहले ही एन्कोड किया जाना होगा? यूआरएल और बहु-तर्क कन्स्ट्रक्टर का उपयोग करने के कारणों में से एक कारण था क्योंकि मुझे यूआरआई से खंड (यदि कोई है) को हटाने की आवश्यकता थी। क्या डबल एन्कोडिंग को मजबूर किए बिना मैं ऐसा कर सकता हूं? क्या कुछ स्ट्रिंग urlMinusFragment = url.getProtocol() + ": //" + url.get प्राधिकरण() + url.getPath() + "?" + url.getQuery(); करने के लिए सुरक्षित रहो? तब मैं उस स्ट्रिंग को नए यूआरआई (स्ट्रिंग) कन्स्ट्रक्टर में फेंक सकता था। एक बार फिर धन्यवाद। – cottonBallPaws
यदि आप एचटीएमएल में 'href' प्रॉपर्टी से बाहर निकल रहे हैं, तो उन्हें हमेशा ठीक से एन्कोड किया जाना चाहिए (यदि वे नहीं हैं, तो HTML अमान्य है, तो आप इसे एक त्रुटि के रूप में देख सकते हैं)। टुकड़े को हटाने के लिए तकनीक ठीक लगती है लेकिन आप मैन्युअल रूप से एक यूआरएल बना रहे हैं (जिसके लिए लाइब्रेरी है)। मैं यूआरआई कक्षा का उपयोग करूंगा। यूआरएल की तरह, यूआरआई में घटक गेटर्स हैं, लेकिन वे * डीकोडेड * स्ट्रिंग्स लौटते हैं जो यूआरआई में वापस सुरक्षित हैं। तो 'यूआरआई (uri.getScheme(), uri.getUserInfo(), uri.getHost(), uri.getPort(), uri.getPath(), uri.getQuery(), शून्य)' काम करना चाहिए। – mgiuca
ब्रिलेंट, पूरी तरह से काम करता है। यूटीएफ -8 प्रारूप में धन्यवाद – cottonBallPaws