HttpWebRequest от AudioPlayerAgent
Я создаю приложение, которое воспроизводит бесконечный аудиопоток. Существует отдельный веб-сервис, к которому я могу обратиться, чтобы получить название и исполнителя текущей воспроизводимой дорожки. То, что я хочу сделать, это запрашивать этот сервис каждые 20 секунд, а затем установить название трека / исполнителя соответственно. В настоящее время я использую фоновый AudioPlayerAgent, чтобы поток мог воспроизводиться вне моего приложения. Вот код, который у меня есть:
<code>public AudioPlayer() { if (!_classInitialized) { _classInitialized = true; // Subscribe to the managed exception handler Deployment.Current.Dispatcher.BeginInvoke(delegate { Application.Current.UnhandledException += AudioPlayer_UnhandledException; }); trackTimer = new Timer(TrackTimerTick, null, 1000, 5000); } } public void TrackTimerTick(object state) { // Create a HttpWebrequest object to the desired URL. HttpWebRequest trackRequest = (HttpWebRequest)HttpWebRequest.Create("<stream url>"); // Start the asynchronous request. IAsyncResult result = (IAsyncResult)trackRequest.BeginGetResponse(new AsyncCallback(TrackCallback), trackRequest); } public void TrackCallback(IAsyncResult result) { if (BackgroundAudioPlayer.Instance.PlayerState == PlayState.Playing && result != null) { try { // State of request is asynchronous. HttpWebRequest trackRequest = (HttpWebRequest)result.AsyncState; HttpWebResponse trackResponse = (HttpWebResponse)trackRequest.EndGetResponse(result); using (StreamReader httpwebStreamReader = new StreamReader(trackResponse.GetResponseStream())) { string results = httpwebStreamReader.ReadToEnd(); StringReader str = new StringReader(results); XDocument trackXml = XDocument.Load(str); string title = (from t in trackXml.Descendants("channel") select t.Element("title").Value).First<string>(); string artist = (from t in trackXml.Descendants("channel") select t.Element("artist").Value).First<string>(); if (BackgroundAudioPlayer.Instance.Track != null) { AudioTrack track = BackgroundAudioPlayer.Instance.Track; track.BeginEdit(); track.Title = title; track.Artist = artist; track.EndEdit(); } } trackResponse.Close(); NotifyComplete(); } catch (WebException e) { Debug.WriteLine(e); Debug.WriteLine(e.Response); } catch (Exception e) { Debug.WriteLine(e); } } } </code>
Каждый раз, когда я пытаюсь прочитать ответ от HttpWebRequest, выдается веб-исключение. Это правильный способ сделать это? У кого-нибудь есть предложения относительно того, как я могу это исправить?