在Mac上获取SHOUTcast元数据

时间:2010-04-18 01:02:58

标签: objective-c cocoa stream metadata shoutcast

我正在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];

我必须从此请求获取标头才能获取信息,对吧?不幸的是,它不断返回这些标题:

  

日期=“2010年4月17日21:57:14 -0200”;

"Max-Age" = 0;

我做错了什么?

3 个答案:

答案 0 :(得分:6)

我找到了这个问题的答案。只需在URL末尾添加7.html并解析文件即可。

即。  http://38.96.148.138:7534/7.html

答案 1 :(得分:1)

答案 2 :(得分:0)

似乎shoutcast不遵循HTTP交换标准,其响应标头和正文不会被两个换行符分开。 NSURLConnection / NSURLResponse无法解析标题;但是,connection:didReceiveResponse:仍然被触发,只有一个空的NSURLResponse。如果我们查看connection:didReceiveData:中的数据,这一点就变得清晰了。收到的第一个块将包含元数据头。