如何在C#中解析URL中的用户凭据?

BIL*_*ILL 12 c# url parsing

我有一些格式的链接:

http://user:pass@example.com
Run Code Online (Sandbox Code Playgroud)

如何获取用户并从此URL传递?

sup*_*opi 20

Uri类具有UserInfo属性.

Uri uriAddress = new Uri ("http://user:password@www.contoso.com/index.htm ");
Console.WriteLine(uriAddress.UserInfo);
Run Code Online (Sandbox Code Playgroud)

此属性返回的值通常采用"userName:password"格式.

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


kam*_*psj 6

我把它放得更远,写了一些URI扩展来分割用户名和密码.想分享我的解决方案.

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;
    }
}
Run Code Online (Sandbox Code Playgroud)