Получение метаданных SHOUTcast на Mac
Я создаю приложение в Objective-C, и мне нужно получить метаданные из потока SHOUTcast. Я попробовал это:
NSURL *URL = [NSURL URLWithString:@"http://202.4.100.2:8000/"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL];
[request addValue:@"1" forHTTPHeaderField:@"icy-metadata"];
[request addValue:@"Winamp 5/3" forHTTPHeaderField:@"User-Agent"];
[request addValue:@"audio/mpeg" forHTTPHeaderField:@"Content-Type"];
[NSURLConnection connectionWithRequest:request delegate:self];
Мне нужно было бы получить заголовки из этого запроса, чтобы получить информацию, верно? К сожалению, он продолжает возвращать эти заголовки:
Дата = "17 апреля 2010 21:57:14 -0200";
"Max-Age" = 0;
Что я делаю не так?
3 ответа
Я нашел ответ на этот вопрос. Просто добавьте 7.html в конце URL-адреса и проанализируйте файл.
Решение Фернандо Валенте для этой проблемы
http://www.fvalente.org/blog/2012/03/15/shoutcast-metadata-the-easy-way/
Кажется, что shoutcast не следует стандартам обмена HTTP, а его заголовки и тело ответа не разделены двумя новыми строками. NSURLConnection/NSURLResponse не могут разобрать заголовки; тем не мение, connection:didReceiveResponse:
все еще запущен, только с пустым NSURLResponse. Это становится ясным, если мы посмотрим на данные, поступающие в connection:didReceiveData:
, Первый полученный чанк будет содержать заголовки метаданных.