我必須使用動態查詢字符串構建URI地址,並尋找通過代碼構建它們的舒適方法。使用http客戶端API構建URI
我瀏覽了System.Net.Http程序集,但沒有發現這種情況下的類或方法。這個API不提供這個嗎?我在StackOverflow的搜索結果使用了System.Web中的HttpUtility類,但我不想在我的類庫中引用任何ASP.Net組件。
我需要這樣一個URI:http://www.myBase.com/get?a=1&b=c。
在此先感謝您的幫助!
更新(2013年9月8日):
我的解決方案是創建一個使用System.Net.WebUtilitiy類編碼值的URI生成器(進口NuGet包遺憾的是沒有提供強名稱鍵)。 這裏是我的代碼:
/// <summary>
/// Helper class for creating a URI with query string parameter.
/// </summary>
internal class UrlBuilder
{
private StringBuilder UrlStringBuilder { get; set; }
private bool FirstParameter { get; set; }
/// <summary>
/// Creates an instance of the UriBuilder
/// </summary>
/// <param name="baseUrl">the base address (e.g: http://localhost:12345)</param>
public UrlBuilder(string baseUrl)
{
UrlStringBuilder = new StringBuilder(baseUrl);
FirstParameter = true;
}
/// <summary>
/// Adds a new parameter to the URI
/// </summary>
/// <param name="key">the key </param>
/// <param name="value">the value</param>
/// <remarks>
/// The value will be converted to a url valid coding.
/// </remarks>
public void AddParameter(string key, string value)
{
string urlEncodeValue = WebUtility.UrlEncode(value);
if (FirstParameter)
{
UrlStringBuilder.AppendFormat("?{0}={1}", key, urlEncodeValue);
FirstParameter = false;
}
else
{
UrlStringBuilder.AppendFormat("&{0}={1}", key, urlEncodeValue);
}
}
/// <summary>
/// Gets the URI with all previously added paraemter
/// </summary>
/// <returns>the complete URI as a string</returns>
public string GetUrl()
{
return UrlStringBuilder.ToString();
}
}
希望這有助於在這裏有人在StackOverflow上。我的請求正在工作。
比約恩
也許這http://msdn.microsoft.com/en-us/ library/system.uri.aspx –
也許'System.Net.WebUtility'? – I4V
System.Net.WebUtility可以幫助我將字符串解碼爲有效的URI。但是我仍然需要自己創建URL,對嗎? – Bjoern