मैं एक सी # एप्लिकेशन लिख रहा हूं जिसे वेबपैप पर कॉलआउट करने की आवश्यकता है। मैं दो यूआरएल को गठबंधन करने के लिए System.Uri
का उपयोग करने की कोशिश कर रहा हूं: एक बेस यूआरएल और मुझे आवश्यक वेबपैम की विशिष्ट सेवा (या कई) के सापेक्ष पथ की आवश्यकता है। मेरे पास webappBackendURL
नामक एक क्लास सदस्य है जिसे मैं एक ही स्थान पर परिभाषित करना चाहता हूं, जिसमें से सभी कॉल बिल्डिंग (webappBackendURL
मेरे उदाहरणों के अनुसार बंद नहीं है)।संरक्षित स्ट्रिंग भागों वाले यूआरएल को कैसे गठबंधन किया जाए?
System.Uri webappBackendURL = new System.Uri("http://example.com/");
System.Uri rpcURL = new System.Uri(webappBackendURL,"rpc/import");
// Result: http://example.com/rpc/import
यह काम करता है, लेकिन, अगर webappBackendURL
एक क्वेरी स्ट्रिंग सम्मिलित हैं, तो संरक्षित नहीं किया गया है।
System.Uri webappBackendURL = new System.Uri("http://example.com/?authtoken=0x0x0");
System.Uri rpcURL = new System.Uri(webappBackendURL,"rpc/import");
// Result: http://example.com/rpc/import <-- (query string lost)
क्या यूआरएल को जोड़ने का एक बेहतर तरीका है? .NET लाइब्रेरी व्यापक है, इसलिए मुझे लगता है कि मैंने इसे संभालने के लिए अंतर्निहित तरीके से अनदेखा किया होगा। आदर्श रूप में, मैं इस तरह यूआरएल गठबंधन करने के लिए सक्षम होने के लिए करना चाहते हैं:
System.Uri webappBackendURL = new System.Uri("http://example.com/?authtoken=0x0x0");
System.Uri rpcURL = new System.Uri(webappBackendURL,"rpc/import?method=overwrite&runhooks=true");
// Result: http://example.com/rpc/import?authtoken=0x0x0&method=overwrite&runhooks=true
जब मैंने अपने सरल पथ से 'उरी' बनाने की कोशिश की, तो मैंने 'UriFormatException 'मारा, इसलिए मुझे नहीं लगता कि मैं विश्वसनीय रूप से' MergerUri' का उपयोग कर सकता हूं। मैं आपके प्रारंभिक सुझाव को एक विधि में लपेटने की कोशिश कर सकता हूं। – jimp
इसके बारे में क्षमा करें मैंने पहले इसका परीक्षण नहीं किया था। अपडेट किया गया एक काम करेगा लेकिन यह आपके द्वारा तय किए गए समान है। – jfin3204