Недавно я нашел проблему при синхронизации данных. После вставки данных в фоновое время я синхронизировал их с другими отделами. Проще говоря, на самом деле это называть интерфейс, предоставленный другой стороной, и сделать вызовы HTTP -запросов. Затем я нашел проблему позже. Если запрошен HTTP -запрос, время ожидания запроса, прерывание не удалось, и исключение IO действительно возможно. Если нормально открывать веб -страницу, это нормально, но когда ее нельзя открыть, вы закроете ее, или на странице будет отображаться информация. Однако синхронизация не может быть сделана. После того, как запрос не удастся, данные должны быть правильно синхронизированы. Сегодня я понимаю важность этой проблемы.
String httpurl = "https://www.baidu.com/s?ie=utf-8&tn=90594569_hao_pg&wd=1"; Url url = null; Httpurlconnection httpconn = null; String result = ""; try {string address = httpurl; url = новый URL (адрес); httpconn = (httpurlconnection) url.openconcen (); // URL -соединение может использоваться для ввода и/или вывода. Установите флаг // doinput true, если вы намереваетесь использовать URL -соединение для ввода, // false, если нет. По умолчанию верно. // URL -соединение может использоваться для ввода или вывода. Если вы хотите подключить ввод с URL, установите тег DOINPUT на TRUE. // Ввод и вывод предназначены для компьютеров, и если вы рассмотрите его с точки зрения программиста, вы часто запутались. // Входные входные и выходные выходные данные, тогда разве он не считывается с вывода или записи с ввода? Фактически, напротив, // ввод ввода вводится в компьютер, и компьютер может его читать, поэтому он взят от входного чтения, а вывод - вывод компьютера, который проходит через выходной записи. httpconn.setDoOutput (false); // Таким образом, если setDoinput (false) вы не можете прочитать, когда хотите прочитать из urlConnection // нельзя читать из urlConnection, если doInput = false (call setdoinput (true)) httpconn.setdoinput (true); // время ожидания подключения и время времени ожидания данных также читаются, httpconn.setconnecttimeout (6000000); httpconn.setreadtimeout (6000000); httpconn.setrequestmethod ("Get"); httpconn.connect (); // Получить код состояния int code = httpconn.getresponsecode (); System.out.println (код); // Читать http -запрос ответ BufferedReader Reader = new BufferedReader (New InputStreamReader (httpconn.getInputStream ())); Строка; while ((line = reader.readline ())! = null) {result = result + line + "/n"; } System.out.println (result); // закрыть io и подключить reader.close (); httpconn.disconnect (); } catch (Exception e) {log.error (e); } наконец {if (httpconn! = null) httpconn.disconnect (); }Код, кажется, написан в небольшом количестве, и места, где должны быть опубликованы ресурсы, также выпускаются. Если вы позвоните в вывод журнала, вы также позвоните. На самом деле, проблема заключается в обработке исключений. Я думал, что некоторые вещи не были синхронизированы раньше из -за проблемы с тайм -аутом подключения. Так что я специально поймал исключение Sockettimeoutexception. Позже я посмотрев на журнал, я обнаружил, что это была проблема с сервером на интерфейсе синхронизации и сообщил об ошибке 502. На самом деле, исключение - исключение ввода -вывода.
Независимо от того, что в этом случае, после этой проблемы, мы должны снова отправить запрос и подтвердить, что другая сторона была синхронизирована в соответствии с результатом, возвращенным интерфейсом. Если есть временная проблема с сервером, мы можем приостановить его в течение короткого периода времени, а затем запросить снова.
Таким образом, метод, который приходит на ум, заключается в том, что, поскольку требование синхронизации в реальном времени не высокое, интервал может быть длиннее. Затем запустите и запустите потоку снова, интервал между 5 минутами каждый раз, пока результат не станет нормальным.
Catch (Exception e) {for (int i = 0; i <6; i ++) {Thread t = new Thread () {public void run () {get ();}}; t.start (); if (result.equals ("ok")) {break; } try {thread.sleep (300000); } catch (прерывание Exception e2) {log.error (e2); }} log.error (e); }Выше приведено сборник информации о таймауте httpurlconnection Java и обработке исключений IO. Мы будем продолжать добавлять соответствующую информацию в будущем. Спасибо за поддержку этого сайта!