2013-11-02 21 views
12

Tôi đã quyết định bắt đầu thử nghiệm ứng dụng của mình với Android 4.4 và nhận thấy rằng các API kết nối HTTP của Android chặt chẽ hơn nhiều so với trước đây? Tôi chưa bao giờ gặp vấn đề này và tôi cho rằng đó là một số loại lỗi.Lỗi Android Api Android 4.4?

Tôi đang kết nối với các chương trình phát sóng SHOUTcast có chứa phản hồi tiêu đề băng giá cụ thể.

Có ai đã xem sự cố này không? Làm thế nào tôi có thể vượt qua nó?

URL được sử dụng cho thử nghiệm này:

http://50.117.121.162:80 

Logcat của ngoại lệ:

11-01 23: 47: 57,299: E/ConnectHelper (3081): java.net .ProtocolException: Dòng trạng thái không mong muốn: ICY 200 OK 11-01 23: 47: 57.299: E/ConnectHelper (3081): tại com.android.okhttp.internal.http.RawHeaders.setStatusLine (RawHeaders.ja va: 108) 11-01 23: 47: 57.299: E/ConnectHelper (3081): tại com.android.okhttp.internal.http.RawHeaders.fromBytes (RawHeaders.java:308) 11-01 23:47 : 57.299: E/ConnectHelper (3081): tại com.android.okhttp.internal.http.HttpTransport.readResponseHeaders (HttpTransport.java:135) 11-01 23: 47: 57.299: E/ConnectHelper (3081): tại com.android.okhttp.internal.http.HttpEngine.readResponse (HttpEngine.java:644) 11-01 23: 47: 57.299: E/ConnectHelper (3081): tại com.android.okhttp.internal.http. HttpURLConnectionImpl.execute (HttpURLConnectionImpl.java:347) 11-01 23: 47: 57.299: E/ConnectHelper (3081): tại com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse (HttpURLConnectionImpl.java:296) 11-01 23: 47: 57.299: E/ConnectHelper (3081): tại com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponseCode (HttpURLConnectionImpl.java:503) 11-01 23: 47: 57.299: E/ConnectHelper (3081): tại com.vblast.xiialive.media.streamers.ConnectHelper.connectWorker (ConnectHelper.java:176) 11-01 23: 47: 57.299: E/ConnectHelper (3081): tại com.vblast .xiialive.media.streamers.ConnectHelper.run (ConnectHelper.java:143) 11-01 23: 47: 57.299: E/ConnectHelper (3081): tại java.lang.Thread.run (Thread.java:841)

+0

Notice các 'okhttp' there. Triển khai thực hiện AFAIK HttpURLConnection đã được thay thế bằng OkHTTP của Square trong Kitkat. – laalto

+0

Vâng, tôi nghĩ có gì đó thay đổi dưới mui xe. Cái này thật kinh tởm. Tôi thực sự cần phải tìm ra một cách xung quanh nó. Bất kỳ đề xuất? – Jona

Trả lời

6

Trên Android 4.4 mọi thứ đã thay đổi theo mui xe và không có tiêu chuẩn SHOUTc phản hồi tiêu đề ICY không được hỗ trợ. Cũng giống như thư viện Apache HTTPClient.

Những gì tôi đã phải làm có thể được tìm thấy trên bài đăng này:
How to parse a none standard HTTP response?

+0

Tôi cũng thêm vào đó giải pháp để giải quyết vấn đề này với Apache HttpClient. Hi vọng điêu nay co ich. –

0

Jona câu trả lời là đúng, nhưng nếu bạn đang sử dụng AACPlayer (https://code.google.com/p/aacplayer-android/) để chơi SHOUTcast của bạn, đây là một giải pháp đơn giản hơn: https://code.google.com/p/aacdecoder-android/wiki/HandlingShoutcastStreams

Ngoài ra, tôi cần phải thay đổi url của tôi từ "http://example.org" để "đóng băng: //example.org"

+1

Lưu ý rằng [câu trả lời chỉ có liên kết] (http://meta.stackoverflow.com/tags/link-only-answers/info) không được khuyến khích, các câu trả lời SO phải là điểm cuối của việc tìm kiếm giải pháp (so với nhưng một điểm dừng khác của tài liệu tham khảo, mà có xu hướng để có được cũ theo thời gian). Vui lòng xem xét thêm bản tóm tắt độc lập tại đây, giữ liên kết dưới dạng tham chiếu. – kleopatra

0

tôi đã thực hiện một giải pháp dựa trên Apache HttpClient, bạn có thể tìm thấy nó như a gist here.

Here là how để dụng nó:

IcyGetRequest request = new IcyGetRequest(urlStr); 
HttpResponse response = request.get(); 
int responseCode = response.getStatusLine().getStatusCode(); 
Các vấn đề liên quan