将凭据添加到URL字符串的正确方式
本文关键字:方式 字符串 URL 添加 | 更新日期: 2023-09-27 17:57:30
简单的问题。我有一个URL,我需要添加用户名和密码来输入凭据。
我想知道C#中是否有一个方法可以接收URL字符串和凭据,并返回带有凭据的URL。我想用这个函数做我所做的事情,但这个函数读取特定的字符串,最终可能会导致错误:(它只是添加用户名和凭据)
url = url.Substring(0, url.IndexOf("/") + 2) + userName + ":" + password + "@" + url.Substring(url.IndexOf("/") + 2);
这种方式真的是静态的。。。我需要获得URL的最后一个字符串。
使用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/
感谢上面的答案,为了处理@、#、:等字符,您需要对用户和密码进行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
}