Эти приложения можно получить метаданные Shoutcast.
В некоторых случаях возникает исключение «Сервер совершил нарушение протокола. Section = ResponseStatusLine».
Пример запроса:
GET http://173.244.215.162:8300/;stream.nsv HTTP/1.1
GET: / HTTP/1.0
Icy-MetaData: 1
User-Agent: WinampMPEG/5.09
Host: 173.244.215.162:8300
Connection: Keep-Alive
ответ:
ICY 200 OK
icy-notice1: <BR>This stream requires <a href="http://www.winamp.com/">Winamp</a><BR>
icy-notice2: SHOUTcast Distributed Network Audio Server/Linux v1.9.8<BR>
icy-name: 100Hitz - Top 40
icy-genre: Various
icy-url: http://www.100hitz.com
content-type: audio/mpeg
icy-pub: 1
icy-metaint: 32768
icy-br: 128
Чтобы решить эту проблему, я могу использовать эти:
<system.net>
<settings>
<httpWebRequest useUnsafeHeaderParsing="true" />
</settings>
</system.net>
в моем файле App.config, но в приложении магазина Windows 8 Я не могу.
Но MediaElement прекрасно работает с указанным выше URL (запросом).
Есть ли способ обойти это ограничение? (C ++ lib или какой-то другой).
Благодарю.
**
**
Я нашел REST SDK для C ++ (Касабланка).
Библиотека позволяет получить ответ без исключения, но все же имеет проблему:
http_client client(L"http://173.244.215.162:8300/;stream.nsv");
http_request request(methods::GET);
request.headers().add(L"GET",L"/ HTTP/1.0");
request.headers().add(L"Icy-MetaData",L"1");
client.request(request).then([](http_response response)
{
...
}
Заголовки ответа отображаются как часть responce.body();
Есть ли способ игнорировать HTTP RFC?
Или Как я могу сделать некоторую предварительную обработку, чтобы получить правильные заголовки ответа.
Благодарю.
Решите эту проблему с помощью ручного анализа заголовков.
Все еще жду лучшего решения.
Задача ещё не решена.
Других решений пока нет …