Unable to resolve host "hostname": No address associated with hostname. Подводные камни
При работе с сетью в Android (4.2.2) возникает такая ошибка, в целом ошибка понятна, не понятно дальнейшее ее поведение:
Иногда при возникновении этой ошибки запрос к серверу не завершается, а продолжается и будет выполненным в течении 2-3 минут.
Можно ли как-то это обойти, то есть: есть exception - прерываем дальнейшее использование сети?
Сейчас такая обработка ошибки, собственно только вывод в лог и закрытие соединения (за блоком try/catch):
try {
DataOutputStream wr = new DataOutputStream(connection.getOutputStream());
wr.write(data.getBytes("UTF-8"));
wr.flush();
wr.close();
responseCode = connection.getResponseCode();
is = connection.getInputStream();
setAvailableConnect(true);
} catch (Exception e) {
is = connection.getErrorStream();
if (responseCode == 0) {
appLog.error("No internet connection, error=" + e.getMessage(), true);
} else {
appLog.error("error #" + responseCode + ": " + getErrorFromStream(is), true);
}
}
В логе сервера:
request #12
request #13 <-- Повторный запрос уже после exception
request #14
request #15
request #16
request #13 <-- Тот запрос на который был exception
request #17
В логе клиента:
request #12
error in request #13
request #13
request #14
request #15
request #16
request #17
Это рушит логику работы приложения, так как приложению важен порядок запросов и их 100% доставка (это идет синхронизация данных), поэтому запросы выполняются последовательно в одном потоке, если какой либо запрос отправлен неудачно, то он повторяется спустя некоторое время, при этом остальные запросы до этого момента не делаются.