Как мне воспроизвести трек с URL-адреса SoundCloud, который, например, я получил из xml-ответа на запрос
<stream-url>https://api.soundcloud.com/tracks/31164607/stream</stream-url>
Я должен был подумать, что это будет так же просто, как:
https://api.soundcloud.com/tracks/31164607/stream&client_id=my_client_id
но я получаю
<error>401 - Unauthorized</error>
Все, что я хочу сделать, это использовать его в Silverlight MediaElement, поэтому все, что мне нужно, это установить некоторый URL-адрес свойства Source MediaElement.
Я проверил приложение, которое я написал около 2 лет назад, и ТОГДА доступ к URL-адресу потока был таким же простым для общедоступного трека:
http://api.soundcloud.com/tracks/18163056/stream&consumer_key=MY_CONSUMER_KEY
однако это больше не работает.
Например, все, что мне нужно было сделать тогда на C#, это:
MediaElement me = new MediaElement();
me.Source= new Url("http://api.soundcloud.com/tracks/18163056/stream&consumer_key=MY_CONSUMER_KEY");
me.Play();
Любые подсказки будут оценены.
У меня был ответ на форуме Microsoft, который, по-видимому, подразумевает, что SoundCloud может оказаться невозможным для потоковой передачи на устройства Windows 8 Metro без использования всего потока до начала воспроизведения, что весьма беспокоит и, по-видимому, подразумевает, что для обеспечения возможности аутентификации это должно быть сделано полностью в строке запроса URL вместо использования заголовка:
(Следующий ответ является ответом на следующий вопрос: «Я могу получить доступ к аудиопотоку по http с помощью MediaElement, однако мне нужно получить к нему доступ через https, в котором мне нужно добавить информацию oAuth в заголовок исходного запроса. Как это делается при использовании MediaElement, и если это невозможно, каков обходной путь для использования аудиопотока в Metro 8, который требует проверки подлинности заголовка для потоковой передачи?')
«Прямой доступ к базовому сетевому потоку в настоящее время не разрешен MediaElement. Из-за этого в настоящее время нет возможности изменить заголовок HTTP-запроса, чтобы включить какую-либо дополнительную информацию для аутентификации. Тем не менее, вы можете контролировать URL-адрес. Теоретически вы можете настроить прокси-службу HTTP, которая преобразует параметры HTTP-запроса GET в необходимые учетные данные oAuth. Имейте в виду, что это всего лишь теоретический обходной путь. На практике вы можете столкнуться с другим поведением. Другим теоретическим обходным путем может быть обработка oAuth самостоятельно. через сокет необработанного потока и передайте перенастроенные медиаданные в MediaElement через «Установить источник» и «Поток произвольного доступа». Помните, что этот метод имеет серьезные ограничения, чтобы использовать «Поток произвольного доступа» с ME вам необходимо убедиться, что все данные доступны, прежде чем передавать их в ME».
Прокси-сервис не масштабируется для приложения, которое просто распространяется бесплатно, поскольку каждый поток должен проходить через прокси-сервер. И сокет необработанного потока, хотя и обходит это, будет означать, что воспроизведение не может начаться до тех пор, пока не будет загружен весь файл, а это противоречит всем текущим рекомендациям UX (User Experience).
Итак, еще раз, если у кого-то есть какие-либо советы или информация о том, как вся аутентификация может быть достигнута в строке запроса вместо использования заголовков, я был бы признателен!