我正在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;
我做错了什么?
答案 0 :(得分:6)
我找到了这个问题的答案。只需在URL末尾添加7.html并解析文件即可。
答案 1 :(得分:1)
Fernando Valente解决这个问题的方法
http://www.fvalente.org/blog/2012/03/15/shoutcast-metadata-the-easy-way/
答案 2 :(得分:0)
似乎shoutcast不遵循HTTP交换标准,其响应标头和正文不会被两个换行符分开。 NSURLConnection / NSURLResponse无法解析标题;但是,connection:didReceiveResponse:
仍然被触发,只有一个空的NSURLResponse。如果我们查看connection:didReceiveData:
中的数据,这一点就变得清晰了。收到的第一个块将包含元数据头。