Android 4.4 http api bugs?

Я решил начать тестирование своего приложения с Android 4.4 и заметил, что API-интерфейсы HTTP HTTP гораздо более строгие, чем раньше? У меня никогда не было этой проблемы, и я предполагаю, что это какая-то ошибка.

Я подключаюсь к трансляциям SHOUTcast, которые содержат конкретный ледяной ответ заголовка.

Кто-нибудь видел эту проблему? Как я могу обойти это?

URL, используемый для этого теста:

http://50.117.121.162:80

Логарифм исключения:

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): при 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): при 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.run(Thread.java:841)

Ответ 1

В Android 4.4 все изменилось под капотом, и ни один стандартный ответ заголовка SHOUTcast ICY больше не поддерживается. Также как библиотека Apache HTTPClient.

То, что мне нужно было сделать, можно найти на этом посту:
Как разобрать стандартный HTTP-ответ?

Ответ 3

Я реализовал решение, основанное на Apache HttpClient, вы можете найти его как суть здесь.

Вот как это использовать:

IcyGetRequest request = new IcyGetRequest(urlStr);
HttpResponse response = request.get();
int responseCode = response.getStatusLine().getStatusCode();