简单的问题。我有一个URL,我需要添加用户名和密码才能输入凭据。
我想知道C#中是否有一个方法可以接收URL字符串和凭据,并返回带有凭据的URL。我想完成我对此函数的操作,但此函数正在读取特定的字符串,最终可能会导致错误: (它只是添加用户名和凭据)
url = url.Substring(0, url.IndexOf("/") + 2) + userName + ":" + password + "@" + url.Substring(url.IndexOf("/") + 2);
这种做法非常静态......我需要获取URL的最终字符串。
答案 0 :(得分:7)
使用UriBuilder
:
var uri = new Uri("http://www.example.org");
var uriWithCred = new UriBuilder(uri) { UserName = "u", Password = "p" }.Uri;
生成:
http://u:p@www.example.org/
答案 1 :(得分:0)
使用上述答案,以处理@,#、:等字符,您需要对该URL编码用户和密码:
public static string CreateProtectedURL(string url, string username, string password)
{
var uri_protected= (new UriBuilder( new Uri(url)) { UserName = HttpUtility.UrlEncode(username), Password = HttpUtility.UrlEncode(password) }.Uri);
return uri_protected.AbsoluteUri.ToString(); //will work in browser
// return HttpUtility.UrlDecode(uri_protected.AbsoluteUri); //will not work in browser, you will get the normal url with user and pass
}