欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java  HttpURLConnection超時和IO異常處理

 更新時間:2016年09月19日 15:42:59   作者:iaiti  
這篇文章主要介紹了Java HttpURLConnection超時和IO異常處理的相關資料,需要的朋友可以參考下

最近同步數(shù)據(jù)的時候發(fā)現(xiàn)了一個問題,我本身后臺插入數(shù)據(jù)后給其他部門后臺做同步。說簡單一點其實就是調(diào)用對方提供的接口,進行HTTP請求調(diào)用。然后后面發(fā)現(xiàn)問題了。HTTP請求的話,有可能請求超時,中斷失敗,IO異常其實都有可能,如果是平時打開一個網(wǎng)頁還好,打不開的時候,你會關掉,或者他頁面給你顯示信息。但是同步,不可以這樣做,一旦請求失敗,必須讓數(shù)據(jù)正確的同步,今天才意識到這個問題的重要性。

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 = new URL(address); 
  httpConn = (HttpURLConnection) url.openConnection(); 
   
  //A URL connection can be used for input and/or output. Set the  
  //DoInput flag to true if you intend to use the URL connection for input, 
  //false if not. The default is true.  
   
  //URL連接可用于input或output。如果想用URL連接輸入,設置DoInput標簽為true。 
  //輸入和輸出是針對計算機的,如果以程序員的角度考慮,經(jīng)常弄混。 
  //input輸入,output輸出,那么不是從output里read,input中write嗎,其實相反 
  //input輸入進計算機,計算機才能讀,所以是從input read,而output是計算機輸出,通過output write。 
  httpConn.setDoOutput(false); 
  //所以如果setDoInput(false),想從URLConnection讀取時不能讀取 
  //Cannot read from URLConnection if doInput=false (call setDoInput(true))  
  httpConn.setDoInput(true); 
   
  //連接建立超時時間還有讀取數(shù)據(jù)超時時間, 
  httpConn.setConnectTimeout(600000); 
  httpConn.setReadTimeout(600000); 
  httpConn.setRequestMethod("GET"); 
  httpConn.connect(); 
  
  //獲取狀態(tài)碼 
  int code = httpConn.getResponseCode(); 
  System.out.println(code); 
  //讀http請求響應 
  BufferedReader reader = new BufferedReader(new InputStreamReader(httpConn.getInputStream())); 
  String line; 
  while ((line = reader.readLine()) != null) 
  { 
    result = result + line+"\n"; 
  } 
  System.out.println(result); 
  //關閉IO和連接 
  reader.close(); 
  httpConn.disconnect(); 
} 
catch(Exception e){ 
  log.error(e); 
} 
finally{ 
  if(httpConn!=null) 
    httpConn.disconnect(); 
} 

代碼看上去寫的沒什么,該釋放資源的地方也釋放了。該打日志輸出的也打了。其實問題就是異常的處理。之前以為一些東西沒有同步過去是因為連接超時的問題。所以特地捕獲SocketTimeoutException異常,后面看了日志之后,發(fā)現(xiàn)是同步接口那邊服務器的問題,報了502錯誤。其實異常是IO異常。

無論是那種情況,我們都要在出現(xiàn)這種問題之后,再次地把請求發(fā)送過去,根據(jù)接口返回的結(jié)果,確認對方已經(jīng)同步到。如果服務器暫時性的出了問題,我們可以暫停一小段時間后,然后再次請求。

所以暫時想到的方法是,由于同步的實時性要求不高,那么可以間隔的時間可以長一點。然后循環(huán),另起線程,每次間隔5分鐘,直至結(jié)果正常。

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 (InterruptedException e2) { 
      log.error(e2); 
    } 
  } 
  log.error(e); 
} 





以上就是對Java  HttpURLConnection超時和IO異常處理的資料整理,后續(xù)繼續(xù)補充相關資料,謝謝大家對本站的支持!

相關文章

  • Java實現(xiàn)將列表數(shù)據(jù)導出為PDF文件并添加水印

    Java實現(xiàn)將列表數(shù)據(jù)導出為PDF文件并添加水印

    這篇文章主要為大家詳細介紹了如何使用Java實現(xiàn)把列表數(shù)據(jù)導出為PDF文件,同時加上PDF水印,文中的示例代碼講解詳細,需要的可以參考下
    2024-02-02
  • IDEA部署Tomcat的超詳細圖文教程

    IDEA部署Tomcat的超詳細圖文教程

    最近迫于無奈從我哪破舊的Eclipse轉(zhuǎn)換到了IDEA,然后就是超多的不習慣,下面這篇文章主要給大家介紹了關于IDEA部署Tomcat的相關資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-02-02
  • IDEA2022中部署Tomcat Web項目的流程分析

    IDEA2022中部署Tomcat Web項目的流程分析

    這篇文章主要介紹了IDEA2022中部署Tomcat Web項目,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • Java 獲取指定日期的實現(xiàn)方法總結(jié)

    Java 獲取指定日期的實現(xiàn)方法總結(jié)

    以下是對Java中獲取指定日期的實現(xiàn)方法進行了歸納總結(jié),需要的朋友可以參考下
    2013-07-07
  • 解決mybatis無法給帶有下劃線屬性賦值問題

    解決mybatis無法給帶有下劃線屬性賦值問題

    這篇文章主要介紹了解決mybatis無法給帶有下劃線屬性賦值問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 淺析Java基于Socket的文件傳輸案例

    淺析Java基于Socket的文件傳輸案例

    這篇文章主要針對Java基于Socket的文件傳輸案例進行詳細解析,具有一定的參考價值,感興趣的朋友可以參考一下
    2016-02-02
  • SpringBoot整合Lettuce redis過程解析

    SpringBoot整合Lettuce redis過程解析

    這篇文章主要介紹了SpringBoot整合Lettuce redis過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • SpringSecurity之SecurityContextHolder使用解讀

    SpringSecurity之SecurityContextHolder使用解讀

    這篇文章主要介紹了SpringSecurity之SecurityContextHolder使用解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • OpenCV實現(xiàn)反閾值二值化

    OpenCV實現(xiàn)反閾值二值化

    這篇文章主要為大家詳細介紹了OpenCV實現(xiàn)反閾值二值化,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • springboot實現(xiàn)rabbitmq的隊列初始化和綁定

    springboot實現(xiàn)rabbitmq的隊列初始化和綁定

    這篇文章主要介紹了springboot實現(xiàn)rabbitmq的隊列初始化和綁定,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-10-10

最新評論