मेरे पास एक यूआरएल है: http://localhost:8080/search.json?q=L%u00e6r
, जो लेयर के लिए एन्कोडेड खोज है।WebRequest.Create अनुचित रूप से डीकोड यूआरएल
दुर्भाग्यवश WebRequest.Create(url)
का उपयोग करके इस यूआरएल से वेबरक्वेट बनाना निम्नलिखित यूआरएल: http://localhost:8080/search.json?q=L%25u00e6r
उत्पन्न करता है।
ध्यान दें कि यह गलत तरीके से %u00e6
डीकोड करता है, और %25u00e6r
उत्पन्न करता है। क्या इस तरह के यूनिकोड से बचने वाले मूल्य को परिवर्तित करने या WebRequest प्राप्त करने का कोई तरीका है। इसे सही ढंग से संभालने के लिए तैयार करें?
यह सबसे अधिक संभावना है कि नेट टीम के लिए एक बग के रूप में रिपोर्ट की जानी चाहिए। WebRequest.Create()
क्वेरी में §, æ, ø या å (या कोई अन्य गैर-असीसी वर्ण) होने पर Request.QueryString.ToString()
द्वारा क्वेरी क्वेरी स्ट्रिंग का उपयोग नहीं कर सकता है। यहां एक छोटी सी एमवीसी कार्रवाई है जिसका परीक्षण करने के लिए इसका उपयोग किया जा सकता है। क्वेरी Query?q=L%C3A6r
public ActionResult Query()
{
var query = Request.QueryString.ToString();
var url = "http://localhost:8080?" + query;
var request = WebRequest.Create(url);
using (var response = request.GetResponse())
using (var stream = response.GetResponseStream())
{
return new FileStreamResult(stream, "text/plain");
}
}
संपादित से कॉल करने की:
दुर्भाग्य @ animaonline के समाधान http://localhost:8080/search.json?q=Lek+%26+L%u00e6r
तरह यूआरएल, जो http://localhost:8080/search.json?q=Lek & Lær
, जहां WebRequest.Create
&
के बारे में उलझन में हो जाता है में डीकोड कर रहे हैं के साथ काम नहीं करता है, और यह सोचता है पैरामीटर q
का हिस्सा होने के बजाय पैरामीटर को अलग करता है।
यदि आप इसे एन्कोडिंग के बिना पास करते हैं, तो निश्चित रूप से यह आपके लिए एन्कोडिंग करेगा? – Base33
मैंने यूआरएल नहीं बनाया, यह किसी तीसरे पक्ष द्वारा आवेदन को दिया गया था। अब मुझे एक ही तीसरे पक्ष के खिलाफ यूआरएल का उपयोग करने की जरूरत है। यह ब्राउज़र में काम करता है, लेकिन सी # – Marius
में नहीं ठीक है ठीक है! @ Anomeaonline के समाधान का प्रयास करें, यह मेरे लिए बहुत अच्छा लगता है! – Base33