WP8 Http web request asincrona

Written by Diego. Posted in .Net, WP8

WP8 Httpwebrequest Uno dei maggiori vantaggi di wp8 è quello che il framework è fortemente improntato sull’utilizzo dei metodi asincroni grazie anche alle keyword async e await, il problema è che a volte ci capita che vorremmo attendere il risultato di una richiesta invece di scatenare metodi di callback.

Requisiti : microsoft BCL tramite nuget Di seguito vediamo come fare una chiamata http, utilizzando la classe HttpWebRequest, con i relativi parametri in Post.
public static async Task httpSend(string url, string content_type = _CNT_APPLICATION_ENC, string method = _MTH_POST, byte[] buffer = null)
{
    try
    {
        // Create a new HttpWebRequest object
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        request.ContentType = content_type;
        request.Method = method;
        request.UserAgent = USER_AGENT;
 
        //parameter Add
        if (buffer != null)
        {
            request.ContentLength = buffer.Length;
            var reqstream = await request.GetRequestStreamAsync();
            reqstream.Write(buffer, 0, buffer.Length);
            reqstream.Close();
        }
 
    //block the method for the response.
    return await request.GetResponseAsync().ContinueWith(t =>
    {
        HttpWebResponse hwr = (HttpWebResponse)t.Result;
        using (StreamReader reader = new StreamReader(hwr.GetResponseStream()))
        {
           string str = reader.ReadToEnd();
           return str;
         }
         }, TaskContinuationOptions.OnlyOnRanToCompletion);
    }
 
    catch (Exception e)
    {
        System.Diagnostics.Debug.WriteLine("errore http post" + e.ToString());
        return "ERROR";
    }
}

Creazione del content
    public static byte[] build_content_buffer(List content)
    {
        byte[] byteArray;

        StringBuilder postData = new StringBuilder();
        foreach (string element in content)
        {
            postData.Append(element);
        }

        byteArray = Encoding.UTF8.GetBytes(postData.ToString());
        return byteArray;
    }
In questo modo la chiamata rimane in attesa della risposta dal servizio/server e ritorna la stringa/pagina Html

Trackback dal tuo sito.

Lascia un commento

Books

Books

unit test
custom
Amazon