2012-02-22 4 views
9

मैं कुछ प्रारूप में लिंक है?सी # में यूआरएल से उपयोगकर्ता प्रमाण पत्र कैसे पार्स करें?</p> <pre><code>http://user:[email protected] </code></pre> <p>कैसे उपयोगकर्ता मिलता है और इस URL से पारित करने के लिए:

+5

आपने वास्तव में क्या प्रयास किया है? अपेक्षित परिणाम क्या था? अगर आपको नतीजे नहीं मिले तो आपको वास्तव में क्या मिला? क्षमा करें, यह "मुझे teh codez" साइट नहीं है - अगर यह अस्पष्ट है तो कृपया एफएक्यू पढ़ें। –

+2

एफएक्यू से: _ "आपको केवल वास्तविक समस्याओं के आधार पर व्यावहारिक, उत्तरदायी प्रश्न पूछना चाहिए।" _ और _ "हम सभी यहां एक साथ सीखने के लिए हैं। उन लोगों के प्रति सहिष्णु रहें जो आपको पता नहीं हो सकता है।" _ –

+0

बेहतर सवाल यह है कि इसे कैसे निकालें: पी – Jay

उत्तर

18

उरी कक्षा में UserInfo विशेषता है।

Uri uriAddress = new Uri ("http://user:[email protected]/index.htm "); 
Console.WriteLine(uriAddress.UserInfo); 

इस संपत्ति द्वारा लौटाया गया मूल्य आमतौर पर "उपयोगकर्ता नाम: पासवर्ड" प्रारूप में होता है।

http://msdn.microsoft.com/en-us/library/system.uri.userinfo.aspx

+1

यह केवल तभी काम करता है जब क्रेडेंशियल्स में "@" प्रतीक नहीं है (उपयोगकर्ता नामों के लिए आम है जो ईमेल पते हैं, या मजबूत पासवर्ड में)। –

+0

सच है। ध्यान दें कि '@' आरएफसी द्वारा निर्दिष्ट वर्दी संसाधन पहचानकर्ता में एक आरक्षित चरित्र है। Https://tools.ietf.org/html/rfc3986#page-12 देखें जैसा कि आप देख सकते हैं कि उपयोगकर्ता नाम या पासवर्ड जो यूआरआई को अमान्य बनाता है, में बहुत से वर्ण हैं। – supertopi

+0

हाँ, जब हमने ऐसा किया, तो हमने क्रेडेंशियल्स को पार्सिंग और HttpUtility.UrlEncode का उपयोग करके उन्हें वापस जोड़ने से पहले समाप्त कर दिया। विंडोज एक्सप्लोरर अन-एन्कोडेड क्रेडेंशियल स्वीकार करेगा (जहां वह उपयोगकर्ता हमारे ऐप में कॉपी/पेस्ट कर रहे हैं)। इसके अलावा, जब यूआरआई बनाता है तो उरीबिल्डर उन्हें एन्कोड नहीं करता है। मैं उम्मीद करता हूं कि "बिल्डर" ऐसी चीजों को संभालने के लिए; एक पार्सर को पास करने से पहले सामान को पार्स करना परेशान करना मुश्किल है। :) –

5

मैं इस एक छोटे से आगे ले लिया और विभाजन यूज़रनेम और पासवर्ड के लिए कुछ यूआरआई एक्सटेंशन लिखा था। मेरा समाधान साझा करना चाहता था।

public static class UriExtensions 
{ 
    public static string GetUsername(this Uri uri) 
    { 
     if (uri == null || string.IsNullOrWhiteSpace(uri.UserInfo)) 
      return string.Empty; 

     var items = uri.UserInfo.Split(new[] { ':' }); 
     return items.Length > 0 ? items[0] : string.Empty; 
    } 

    public static string GetPassword(this Uri uri) 
    { 
     if (uri == null || string.IsNullOrWhiteSpace(uri.UserInfo)) 
      return string.Empty; 

     var items = uri.UserInfo.Split(new[] { ':' }); 
     return items.Length > 1 ? items[1] : string.Empty; 
    } 
} 
+0

मिस्ड @ डोमेन पार्सिंग – Jay

+0

धन्यवाद, इससे मेरी मदद की :) – gakera

+0

हमें अक्सर एक ही समय में https://gist.github.com/duongphuhiep/13f104e4229bf7e1869921e034834ec6 दोनों की आवश्यकता होती है – Hiep

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