Je vous propose une méthode d'extension simple qui permet d'envoyer un formulaire vers une page html. Le beta 2 de silverlight nous simplifie la vie avec la fonction UploadStringAsync. Il ne reste plus que l'encodage des données et le content type à assigner.
/// <summary>
/// Method extensions for SLExtension framework
/// </summary>
public static class SLExtension
{
....
#region WebClient
/// <summary>
/// Sends an HTML form. The request is sent using POST method
/// </summary>
/// <param name="webclient">The webclient.</param>
/// <param name="uri">The URI of the resource to receive the file. </param>
/// <param name="data">The form data to upload.</param>
public static void SendHtmlForm(this WebClient webclient, Uri uri, IEnumerable<KeyValuePair<string, string>> data)
{
StringBuilder dataBuilder = new StringBuilder();
int cnt = 0;
foreach (var item in data)
{
if (cnt > 0)
{
dataBuilder.Append('&');
}
dataBuilder.Append(item.Key);
dataBuilder.Append('=');
dataBuilder.Append(HttpUtility.UrlEncode(item.Value));
}
webclient.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
webclient.UploadStringAsync(uri, dataBuilder.ToString());
}
/// <summary>
/// Sends an HTML form. The request is sent using POST method
/// </summary>
/// <param name="webclient">The webclient.</param>
/// <param name="uri">The URI of the resource to receive the file. </param>
/// <param name="data">The form data to upload.</param>
/// <param name="userToken">user state</param>
public static void SendHtmlForm(this WebClient webclient, Uri uri, IEnumerable<KeyValuePair<string, string>> data, object userToken)
{
StringBuilder dataBuilder = new StringBuilder();
int cnt = 0;
foreach (var item in data)
{
if (cnt > 0)
{
dataBuilder.Append('&');
}
dataBuilder.Append(item.Key);
dataBuilder.Append('=');
dataBuilder.Append(HttpUtility.UrlEncode(item.Value));
}
webclient.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
webclient.UploadStringAsync(uri, "POST", dataBuilder.ToString(), userToken);
}
#endregion WebClient
#endregion Public Methods
}