我想从流式冰冷协议(protocol)中读取数据,问题是我尝试过的所有库(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

对不起,无法弄清楚如何格式化代码或添加换行符。

编辑:我在下面的评论中包括了代码。

最佳答案

尝试以下方法:

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();

这完全适合我!

关于java - 如何在Java中读取冰冷的协议(protocol)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6888358/

10-10 17:00