1

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

我做错了什么?

4

3 回答 3

6

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

http://38.96.148.138:7534/7.html

于 2010-10-08T14:39:17.583 回答
1

费尔南多瓦伦特对这个问题的解决方案

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

于 2012-11-27T12:12:10.420 回答
0

看起来,shoutcast 不遵循 HTTP 交换标准,并且它的响应头和正文没有被两个换行符分隔。NSURLConnection/NSURLResponse 无法解析出标头;但是,connection:didReceiveResponse:仍然会被触发,只是带有一个空的 NSURLResponse。如果我们看一下传入的数据,就会清楚这一点connection:didReceiveData:。收到的第一个块将包含元数据标头。

于 2010-04-18T03:29:33.040 回答