Je dois créer une adresse URI avec des chaînes de requête dynamiques et rechercher un moyen confortable de les générer via le code. J'ai parcouru l'assembly System.Net.Http mais je n'ai pas trouvé de classe ou de méthode pour ce cas. Est-ce que cette API ne fournit pas cela? Mes résultats de recherche ici sur StackOverflow utilisent la classe HttpUtility de System.Web, mais je ne veux pas référencer les composants ASP.Net dans ma bibliothèque de classes. J'ai besoin d'un URI comme ceci: http://www.myBase.com/get?a=1&b=c.Création d'un URI avec l'API client http
Merci d'avance pour votre aide!
Mise à jour (08/09/2013):
Ma solution a été de créer un URI constructeur qui utilise la classe System.Net.WebUtilitiy pour coder les valeurs (malheureusement, le paquet NuGet importé n'a pas fourni un nom fort clé). Voici mon code:
/// <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();
}
}
Hope this helps quelqu'un ici à StackOverflow. Ma demande fonctionne.
Björn
Peut-être que ce http://msdn.microsoft.com/en-us/ library/system.uri.aspx –
peut-être 'System.Net.WebUtility'? – I4V
Le System.Net.WebUtility pourrait m'aider à décoder la chaîne à un URI valide. Mais je dois encore construire l'URL par moi-même, non? – Bjoern