Получение метаданных 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-адреса и проанализируйте файл.

IE http://38.96.148.138:7534/7.html

Решение Фернандо Валенте для этой проблемы

http://www.fvalente.org/blog/2012/03/15/shoutcast-metadata-the-easy-way/

Кажется, что shoutcast не следует стандартам обмена HTTP, а его заголовки и тело ответа не разделены двумя новыми строками. NSURLConnection/NSURLResponse не могут разобрать заголовки; тем не мение, connection:didReceiveResponse: все еще запущен, только с пустым NSURLResponse. Это становится ясным, если мы посмотрим на данные, поступающие в connection:didReceiveData:, Первый полученный чанк будет содержать заголовки метаданных.

Другие вопросы по тегам