2015-09-16 2 views
0

recipes page для OkHttp утверждает, что при создании асинхронного запроса,OkHttp GET и возможность блокировки при чтении тела

Обратный вызов производится после того, как заголовки ответа будут готовы. Чтение тела ответа может все еще блокироваться.

При каких условиях будет считываться блок корпуса ответа? Не исключает ли возможность блокировать все цели асинхронного вызова?

Для тех, кто использовал OkHttp, как вы имели дело с возможностью блокировки?

  1. Игнорировать.
  2. Используйте синхронные запросы и сделайте их асинхронными самостоятельно, например, в AsyncTask.
  3. Остановите трату времени и используйте другую библиотеку HTTP.
  4. ???

ответ

2

При каких условиях будет считываться блок корпуса ответа?

Когда тело больше, чем оставшееся пространство после считывания заголовков в размере куска 2k, который используется.

Невозможно ли блокировать поражение всей цели асинхронного вызова?

№ Нет. Никто не хочет писать асинхронный код, связанный с обработкой байтов.

Когда получен ответ, мы передаем вам источник, из которого можно считывать данные с блокировкой. Блокирование кода ввода-вывода намного проще в чтении, написании и причине, и большинство библиотек в этом пространстве (например, Gson) настраиваются для блокировки чтения.

Для тех, кто использовал OkHttp, как вы имели дело с возможностью блокировки?

Вы только что делаете блокировку, считывая данные тела, а затем уведомляете код приложения через любой механизм, который вы хотите, когда он будет завершен.

Вы упомянули AsyncTask, который заставляет вас казаться, что вы на Android. Обратные вызовы не происходят в основном потоке, поэтому блокирование ввода-вывода не имеет значения.

+0

Это не похоже на вопрос, но до тех пор, пока HTTP-библиотеки Apache не устарели, моя гостевая HTTP-библиотека была андроид-асинк-http. Теперь я ищу концептуально подобную альтернативу. У меня создалось впечатление, что OkHttp был разработан для Android и последовал решительному соглашению Android о вызовах и обратных вызовах, происходящих в основном потоке. Поскольку это не так, мой вопрос утратил свою актуальность для меня. –

+0

OkHttp - это не Android-библиотека. –

+0

«Блокировка кода ввода-вывода намного проще читать, писать и рассуждать». Не совсем понятно, что ответственность за чтение вообще невелика. –

Смежные вопросы