Ошибки HTTP API Android 4.4?

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

Я подключаюсь к трансляциям 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. внутренний. ) 11-01 23:47:57.299: E/ConnectHelper(3081): на ком. 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)


person Jona    schedule 02.11.2013    source источник
comment
Обратите внимание на okhttp. Реализация AFAIK HttpURLConnection была заменена OkHTTP от Square в Kitkat.   -  person laalto    schedule 02.11.2013
comment
Да, я думал, что-то изменилось под капотом. Это воняет. Мне действительно нужно найти способ обойти это. Есть рекомендации?   -  person Jona    schedule 02.11.2013


Ответы (3)


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

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

person Jona    schedule 07.11.2013
comment
Я также добавил туда решение, которое решает эту проблему с помощью Apache HttpClient. Надеюсь это поможет. - person Michał M; 13.12.2013

Jona отвечает правильно, но если вы используете AACPlayer(https://code.google.com/p/aacplayer-android/) для воспроизведения SHOUTcast, вот более простое решение: https://code.google.com/p/aacdecoder-android/wiki/HandlingShoutcastStreams

Кроме того, мне нужно было изменить свой URL-адрес с «http://example.org» на «icy://example.org». "

person jonathanrz    schedule 03.02.2014
comment
Обратите внимание, что ответы только по ссылкам не рекомендуются, ответы SO должны быть конечной точкой поиска. для решения (по сравнению с еще одной остановкой ссылок, которые со временем устаревают). Пожалуйста, рассмотрите возможность добавления здесь отдельного синопсиса, оставив ссылку в качестве ссылки. - person kleopatra; 03.02.2014

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

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

IcyGetRequest request = new IcyGetRequest(urlStr);
HttpResponse response = request.get();
int responseCode = response.getStatusLine().getStatusCode();
person Tom Susel    schedule 06.02.2014