java.net.SocketException: ошибка recvfrom: ECONNRESET (сброс соединения одноранговым узлом) происходит несколько раз

Я много искал это исключение, которое редко встречается, но я не нашел подходящего ответа, который мог бы решить мою проблему, я использую HttpURLConnection, чтобы получить ответ в виде xml с URL-адреса, он отлично работает, но иногда я получаю это исключение:
java.net.SocketException: recvfrom failed: ECONNRESET (Connection reset by peer), я использовал следующий код, и url1 — это мой URL-адрес, который дает xml.

url=new URL(url1);
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setDoInput(true);  
urlConnection.connect();
InputStream in = new BufferedInputStream(urlConnection.getInputStream());
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String result, line = reader.readLine();
result = line;
           while((line=reader.readLine())!=null)
                       {
               result+=line;
           }

           System.out.println("Result: "+result);

person OM Yadav    schedule 11.05.2013    source источник
comment
время ожидания соединения истекло stackoverflow.com/questions/11638634/   -  person Raghunandan    schedule 11.05.2013
comment
У меня точно такая же проблема..   -  person Dediqated    schedule 22.05.2013
comment
возможный дубликат Получение SocketException: сброс соединения одноранговым узлом в Android   -  person Jim G.    schedule 09.04.2014


Ответы (4)


Попробуйте поставить urlConnection.setRequestProperty("connection", "close"); перед подключением. Это отключит свойство keep-alive, которое включено по умолчанию.

person stuckedoverflow    schedule 07.02.2014
comment
как установить это для HttpClient или HttpPost? - person Prashanth Debbadwar; 30.06.2016

У меня была аналогичная проблема при попытке поговорить с моим сервером. Я до сих пор не знаю, что произошло, но я нашел это при поиске решить проблему:

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

Прочитав этот пост, я убил экземпляр apache, работающий на моем сервере, дал телефону понять, что в соединении отказано, и перезапустил apache. После этого проблема исчезла. Надеюсь это поможет!

person Dylan Knowles    schedule 05.12.2013

В моем случае я перешел с http на https и все стало нормально

person Marriage    schedule 26.04.2018

откройте свой браузер, который вы используете, и попробуйте скопировать URL-адрес и вставить его в браузер вашего МОБИЛЬНОГО УСТРОЙСТВА, если вы по-прежнему получаете ту же ошибку или может быть отказано в соединении, это означает, что ваш МОБИЛЬНЫЙ и ВАШ ПК, на котором работает сервер, не находятся на одном и том же плане .

person Sagar Maiyad    schedule 11.05.2013
comment
Да, я сделал это, но он открывается в браузере мобильного телефона, как я объяснил, это происходит 5 раз из 20 протестированных. - person OM Yadav; 11.05.2013
comment
Нет, это не так. Не может быть соединения для сброса, если не было соединения, и не может быть соединения, если между одноранговыми узлами не было сетевого пути. - person user207421; 17.05.2017