Обработка сжатого содержимого в формате gzip на Android

Я пытаюсь проанализировать файл из Интернета на Android с помощью метода DOM.

Рассматриваемый код:

try {
    URL url = new URL("https://www.beatport.com/en-US/xml/content/home/detail/1/welcome_to_beatport");

    InputSource is = new InputSource(url.openStream());

    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    DocumentBuilder db = dbf.newDocumentBuilder();
    Document document = db.parse(is);
    document.getDocumentElement().normalize();
} catch(Exception e) {
    Log.v(TAG, "Exception = " + e);
}

Но я получаю следующее исключение:

V/XMLParseTest1(  846):Exception = org.xml.sax.SAXParseException: name expected (position:START_TAG <null>@2:176 in java.io.InputStreamReader@43ea4538) 

Файл передается мне в сжатом виде. Я ' мы проверили, что объект is в отладчике и его длина составляет 6733 байта (такая же, как длина содержимого файла в заголовках ответа), однако, если я сохраню файл на свой жесткий диск из браузера, его размер будет 59114 байт. Кроме того, если я загружу его на свой собственный сервер, который не сжимает XML-файлы, когда он обслуживает их, и задаю URL, код работает нормально.

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

Есть ли способ сначала распаковать поток? Есть ли другие идеи?

9
задан janosrusiczki 15 January 2013 в 14:58
поделиться