В настоящее время я работаю над реализацией приложения для Windows Phone 7, которое должно получать поток SHOUTcast (вдохновлено этим вопросом ).Местоположение потока представлено IP-адресом и портом.
Вот пример URL-адреса потока SHOUTcast: http://78.159.104.183:80
Я пытаюсь создать HttpWebRequest для получения данных из потока:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://78.159.104.183:80")
;
После инициализации запроса я пытаюсь получить ответ через асинхронный обратный вызов:
request.BeginGetResponse(new AsyncCallback(GetShoutAsync), request);
GetShoutAsync выглядит следующим образом:
void GetShoutAsync(IAsyncResult res)
{
HttpWebRequest request = (HttpWebRequest)res.AsyncState;
HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(res);
}
Когда я собираю проект и запускаю его, он достигает точки инициализации запроса, но обратный вызов никогда не вызывается .
Я заметил интересную вещь - SHOUTcast реализуетметод, с помощью которого, когда пользователь пытается перейти к URL-адресу потока, сервер обнаруживает пользовательский агент и, если это веб-браузер, он просто показывает страницу HTML вместо передачи application / octet-stream content.
Вы по-прежнему можете получать поток напрямую, если используете косую черту и точку с запятой в конце URL-адреса потока: http://78.159.104.183:80/;
Однако в моем приложении я не могу получить ответ- кажется, что обратный вызовникогда не быть достигнутым.Я попытался подделать пользовательский агент, передав его непосредственно в HttpWebRequest:
request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.3) Gecko/20100401 Mozilla/5.0 (X11; U; Linux i686; it-IT; rv:1.9.0.2) Gecko/2008092313 Ubuntu/9.25 (jaunty) Firefox/3.8";
Это работает для простого потока URL (без точки с запятой в конце), чтобы получить содержимое HTML, но я не могу получить двоичный файлstream.
Кто-нибудь когда-либо сталкивался с чем-то подобным или знает, что его вызывает?