На Android ли DefaultHttpClient правильно очищает HttpPost при возникновении исключения? - PullRequest
0 голосов
/ 13 января 2011

Я вижу проблему с повторным использованием моего http-клиента после сбоя выполнения HttpPost. Это может быть тайм-аут или недоступная услуга (может быть, другие). Запрос может выдать тайм-аут сокета, и когда я позже использую клиента (с новым объектом HttpPost), он выдаст исключение недопустимого состояния. Мои исследования показывают, что это происходит, когда сокет не помечен для «повторного использования», как в случае, который, естественно, происходит, если у вас есть два потока, и один находится в середине обработки своего запроса, прежде чем второй поток попытается использовать http-клиент ( отсюда и его розетка).

Я думаю, что в коде http-клиента есть ошибка, но могут быть или «лучшие практики», которым я не правильно следую, или известная работа.

Любая помощь по этому вопросу будет принята.

1 Ответ

2 голосов
/ 13 января 2011

Мои исследования показывают, что это происходит, когда сокет не помечен для «повторного использования», как в случае, который естественным образом происходит, если у вас два потока, и один находится в середине обработки своего запроса, прежде чем второй поток пытаетсяиспользуйте http-клиент (отсюда и его сокет).

HttpClient по умолчанию не поддерживает потоки.Вам нужно использовать ThreadSafeClientConnManager.

...