動的クエリ文字列を使用して URI アドレスを作成する必要があり、コードを介してそれらを作成する快適な方法を探しています。
System.Net.Http アセンブリを参照しましたが、このケースのクラスまたはメソッドが見つかりません。この API はこれを提供しませんか? StackOverflow での私の検索結果は、System.Web の HttpUtility クラスを使用していますが、クラス ライブラリで ASP.Net コンポーネントを参照したくありません。
http://www.myBase.com/get?a=1&b=cのような URI が必要です。
助けてくれてありがとう!
更新 (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 の誰かに役立つことを願っています。私のリクエストは機能しています。
ビョルン