5

我想从流式冰协议中读取数据。问题是我尝试过的所有库(dsj,MP3SPI)都使用 HttpUrlConnection 来执行此操作。但是我已经在我的 Windows 7 上尝试过并且我收到了“无效的 http 响应”这是正常原因,“HTTP 200 OK”与“ICY 200 OK”不同。我知道这可以通过套接字完成,但我是初学者,所以如果有的话可以提供几行代码,所以我可以得到一个想法,我将不胜感激。另外,如果您有一些解决方案,请分享它们。谢谢,祝您有美好的一天!

这是我尝试过的代码:

URLConnection connection = new URL("89.47.247.59:8020").openConnection();
InputStream in = connection.getInputStream();
System.out.println("getting lots of bytes");
in.close();

错误是:

Exception in thread "main" java.io.IOException: Invalid Http response
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.jav‌​a:1328)
at javaapplication1.JavaApplication1.main(JavaApplication1.java:46) Java Result: 1

抱歉无法弄清楚如何格式化代码或添加换行符。

编辑:我在下面的评论中包含了代码..

4

2 回答 2

5

试试这个:

URL url=new URL("89.47.247.59:8020");
Socket socket=new Socket(url.getHost(), url.getPort());
OutputStream os=socket.getOutputStream();
String user_agent = "WinampMPEG/5.09";
String req="GET / HTTP/1.0\r\nuser-agent: "+user_agent+"\r\nIcy-MetaData: 1\r\nConnection: keep-alive\r\n\r\n";
os.write(req.getBytes());
is=socket.getInputStream();

这对我来说非常有用!

于 2011-10-30T16:36:54.923 回答
3

MP3SPI 应该在所有系统上都能正常工作。

如果要提取 ICY 元数据,请检查以下代码:https : //gist.github.com/1008126 有一个 IcyInputStream 可以打开 URL 并返回一个常规 InputStream,您可以将其附加到解码器,它还可以提取元数据,如 Artist 和曲目标题。

我使用此处的信息编写了此代码

于 2011-07-31T08:37:33.900 回答