Лучшие практики извлечения XML / потока из HTTP в Android - PullRequest
1 голос
/ 04 мая 2010

Каковы лучшие практики парсинга XML с ресурса HTTP в Android? Я использую HttpURLConnection для получения InputStream, оборачивая его BufferedInputStream, а затем использую SAX для анализа буферизованного потока. По большей части это работает, хотя я получаю сообщения об ошибках SocketTimeoutException: тайм-аут операции или общая ошибка синтаксического анализа. Я считаю, что это связано с InputStream.

  1. Поможет ли использование HttpClient вместо HttpURLConnection? Если да, то почему?
  2. Должен ли поток выводиться в файл, если вместо потока проанализирован файл?

Любой вклад или направление будет принята с благодарностью. Спасибо за ваше время.

1 Ответ

1 голос
/ 04 мая 2010

Я недавно сделал это, поэтому у меня нет опыта работы с ним, но я использовал HTTPCLient. HTTPClient делает несколько вещей лучше, чем необработанные URLConnections, и наиболее важным в этом случае является то, что он повторяет попытки три раза, если не может подключиться к серверу. Это помогает, если у вас просто дрянное соединение с потерей пакета.

Я также анализирую InputStream с SAX, но оборачиваю InputStream в BufferedReader (используя промежуточный InputStreamReader). Я понятия не имею, если SAX делает это внутренне, но из моего опыта, BufferedStreams работают значительно лучше, чем небуферизованные потоки. С помощью обычного InputStream вы делаете запрос на чтение для каждого байта, который только увеличивает вероятность проблем с сетью, если у вас дрянное соединение. Буферизованные потоки будут считывать в буфере количество байтов на чтение (я думаю, что я установил мой в 1024, но вы можете попробовать другие значения, чтобы увидеть, что работает лучше для вас).

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...