locked
Est il possible de lancer des requetes HTTP à partir d'un background Audio Agent ? RRS feed

  • Question

  • Bonjour,

    Je n'arrive pas à lancer des requêtes HTTP à partir d'un background Audio Agent, sous Windows Phone 8, est ce normal ? Voici un exemple de code qui illustre mon propos:

    namespace MyAudioPlaybackAgent
    {
        public class AudioPlayer : AudioPlayerAgent
        {
    
            static bool _classInitialized = false;
    
            static AudioPlayer()
            {
                // Subscribe to the managed exception handler
                Deployment.Current.Dispatcher.BeginInvoke(delegate
                {
                    Application.Current.UnhandledException += UnhandledException;
                });
    
                if (!_classInitialized)
                {
                    _classInitialized = true;
                    // test HTTP
                    HttpWebRequest request = WebRequest.CreateHttp(new Uri("http://my.web.site", UriKind.Absolute));
                    Debug.WriteLine("Launch request {0}", request.RequestUri.ToString());
                    IAsyncResult ar = request.BeginGetResponse(new AsyncCallback(GetResponseCallback), request);
    
                    Debug.WriteLine("Launched request"); // Cette ligne n'est jamais appeléé
                }
            }
    
            // Cette methode n'est jamais appelee
            private static void GetResponseCallback(IAsyncResult asynchronousResult)
            {
                Debug.WriteLine("Got response");
                HttpWebResponse response;
                HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
                try {
                    response = (HttpWebResponse)request.EndGetResponse(asynchronousResult);
                } catch (WebException wexpt) {
                    Debug.WriteLine("WebException in GetResponseCallback --> {0}", wexpt.Message);
                    return;
                }
                StreamReader reader = new StreamReader(response.GetResponseStream());
                string authRes = reader.ReadToEnd();
                Debug.WriteLine("Received {0}", authRes);
            }

    Auriez vous la gentillesse de m'indiquer si je commets une erreur dans mon code ?

    Merci par avance pour toute réponse,

    Nico

    vendredi 31 mai 2013 09:33

Réponses

  • Pour répondre à ma propre question, il suffit de ne pas placer les appels HTTP dans constructeur statique, je les ai déportés dans OnUserAction par exemple. Je ne sais pas si cette limitation est marquée quelque part dans les docs mais serait heureux d'avoir un pointeur sur une doc qui explique pourquoi (je débute en C#). Merci, bonne journée,
    • Marqué comme réponse _nico_ vendredi 31 mai 2013 11:46
    vendredi 31 mai 2013 11:46

Toutes les réponses