12

我决定开始使用 Android 4.4 测试我的应用程序,并注意到 Android HTTP 连接 API 比以前更严格?我从来没有遇到过这个问题,我认为这是某种错误。

我正在连接到包含特定冰冷标头响应的 SHOUTcast 广播。

有没有人看到这个问题?我怎样才能绕过它?

用于此测试的 URL:

http://50.117.121.162:80

异常的Logcat:

11-01 23:47:57.299:E/ConnectHelper(3081):java.net.ProtocolException:意外状态行:ICY 200 OK 11-01 23:47:57.299:E/ConnectHelper(3081):在 com.android。 okhttp.internal.http.RawHeaders.setStatusLine(RawHeaders.java:108) 11-01 23:47:57.299: E/ConnectHelper(3081): at com.android.okhttp.internal.http.RawHeaders.fromBytes(RawHeaders.java :308) 11-01 23:47:57.299: E/ConnectHelper(3081): 在 com.android.okhttp.internal.http.HttpTransport.readResponseHeaders(HttpTransport.java:135) 11-01 23:47:57.299: E /ConnectHelper(3081): 在 com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:644) 11-01 23:47:57.299: E/ConnectHelper(3081): 在 com.android.okhttp。 internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:347) 11-01 23:47:57.299: E/ConnectHelper(3081): 在 com.android。okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:296) 11-01 23:47:57.299: E/ConnectHelper(3081): at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java :503) 11-01 23:47:57.299: E/ConnectHelper(3081): 在 com.vblast.xiialive.media.streamers.ConnectHelper.connectWorker(ConnectHelper.java:176) 11-01 23:47:57.299: E /ConnectHelper(3081): 在 com.vblast.xiialive.media.streamers.ConnectHelper.run(ConnectHelper.java:143) 11-01 23:47:57.299: E/ConnectHelper(3081): 在 java.lang.Thread。运行(线程.java:841)57.299: E/ConnectHelper(3081): 在 com.vblast.xiialive.media.streamers.ConnectHelper.connectWorker(ConnectHelper.java:176) 11-01 23:47:57.299: E/ConnectHelper(3081): 在 com.vblast .xiialive.media.streamers.ConnectHelper.run(ConnectHelper.java:143) 11-01 23:47:57.299: E/ConnectHelper(3081): 在 java.lang.Thread.run(Thread.java:841)57.299: E/ConnectHelper(3081): 在 com.vblast.xiialive.media.streamers.ConnectHelper.connectWorker(ConnectHelper.java:176) 11-01 23:47:57.299: E/ConnectHelper(3081): 在 com.vblast .xiialive.media.streamers.ConnectHelper.run(ConnectHelper.java:143) 11-01 23:47:57.299: E/ConnectHelper(3081): 在 java.lang.Thread.run(Thread.java:841)

4

3 回答 3

6

在 Android 4.4 上,事情确实发生了变化,不再支持非标准的 SHOUTcast ICY 标头响应。就像 Apache HTTPClient 库一样。

我必须做的可以在这篇文章中找到:
如何解析非标准的 HTTP 响应?

于 2013-11-07T12:51:26.490 回答
0

Jona 的回答是对的,但是如果你使用 AACPlayer( https://code.google.com/p/aacplayer-android/ ) 来播放你的 SHOUTcast,这里有一个更简单的解决方案:https ://code.google.com/ p/aacdecoder-android/wiki/HandlingShoutcastStreams

另外,我需要将我的网址从“ http://example.org ”更改为“icy://example.org”

于 2014-02-03T13:44:10.037 回答
0

我已经实现了一个基于Apache HttpClient的解决方案,您可以在这里找到它作为要点

以下是如何使用它:

IcyGetRequest request = new IcyGetRequest(urlStr);
HttpResponse response = request.get();
int responseCode = response.getStatusLine().getStatusCode();
于 2014-02-06T11:12:53.660 回答