Http請(qǐng)求長(zhǎng)時(shí)間等待無結(jié)果返回解決辦法
Http請(qǐng)求長(zhǎng)時(shí)間等待無結(jié)果返回解決辦法
今天遇到一個(gè)奇葩的問題,這個(gè)程序主要是用于調(diào)用接口搜集數(shù)據(jù)的,但是,發(fā)生了不好的事情就是服務(wù)器中啟動(dòng)的進(jìn)程非常多,一直無法結(jié)束,沒辦法只能采用kill的方法,將所有的這部分進(jìn)程殺掉。
分析了下程序,寫了個(gè)測(cè)試,本地跑依舊長(zhǎng)時(shí)間等待,無法運(yùn)行,也不拋出異常,最后發(fā)現(xiàn)問題在于發(fā)送請(qǐng)求的部分,一直在等待對(duì)方服務(wù)器響應(yīng),由于采用的是keep-alive方式的連接,這里沒有采用超時(shí)的方式,以至于程序會(huì)長(zhǎng)時(shí)間等待下去。
經(jīng)過測(cè)試發(fā)現(xiàn)開啟進(jìn)程過多在于沒有設(shè)置超時(shí),希望讀者注意這部分,否則,容易出現(xiàn)筆者遇到的這種問題。最終的問題應(yīng)該是接口提供方的異常導(dǎo)致。
public static String sendPost(String url, String param) { PrintWriter out = null; BufferedReader in = null; String result = ""; try { URL realUrl = new URL(url); // 打開和URL之間的連接 URLConnection conn = realUrl.openConnection(); // 設(shè)置通用的請(qǐng)求屬性 conn.setRequestProperty("accept", "*/*"); conn.setRequestProperty("connection", "Keep-Alive"); conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); conn.setConnectTimeout(4000); conn.setReadTimeout(4000); // 發(fā)送POST請(qǐng)求必須設(shè)置如下兩行 conn.setDoOutput(true); conn.setDoInput(true); // 獲取URLConnection對(duì)象對(duì)應(yīng)的輸出流 out = new PrintWriter(conn.getOutputStream()); // 發(fā)送請(qǐng)求參數(shù) out.print(param); // flush輸出流的緩沖 out.flush(); // 定義BufferedReader輸入流來讀取URL的響應(yīng) in = new BufferedReader( new InputStreamReader(conn.getInputStream())); String line; while ((line = in.readLine()) != null) { result += line; } } catch (Exception e) { System.out.println("發(fā)送 POST 請(qǐng)求出現(xiàn)異常!"); //e.printStackTrace(); } //使用finally塊來關(guān)閉輸出流、輸入流 finally{ try{ if(out!=null){ out.close(); } if(in!=null){ in.close(); } } catch(IOException ex){ //ex.printStackTrace(); } } return result; }
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
- Node.js發(fā)送HTTP客戶端請(qǐng)求并顯示響應(yīng)結(jié)果的方法示例
- 模擬HTTP請(qǐng)求實(shí)現(xiàn)網(wǎng)頁自動(dòng)操作及數(shù)據(jù)采集的方法
- java 中http請(qǐng)求為了防止亂碼解決方案
- Java使用HttpClient實(shí)現(xiàn)Post請(qǐng)求實(shí)例
- 微信小程序 http請(qǐng)求封裝詳解及實(shí)例代碼
- Angular的$http的ajax的請(qǐng)求操作(推薦)
- 完美解決node.js中使用https請(qǐng)求報(bào)CERT_UNTRUSTED的問題
相關(guān)文章
web 開發(fā)之創(chuàng)建本地文件夾的實(shí)現(xiàn)方法
這篇文章主要介紹了web 開發(fā)之創(chuàng)建本地文件夾的實(shí)現(xiàn)方法的相關(guān)資料,filemanage_util.fullPath 就是創(chuàng)建文件的路徑 這是跨平臺(tái)的創(chuàng)建文件夾,需要的朋友可以參考下2017-08-08解決request.getParameter取值后的if判斷為NULL的問題
這篇文章主要介紹了解決request.getParameter取值后的if判斷為NULL的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03jsp簡(jiǎn)單連接SQL Server2000數(shù)據(jù)庫的方法
這篇文章主要介紹了jsp簡(jiǎn)單連接SQL Server2000數(shù)據(jù)庫的方法,較為詳細(xì)的分析了JSP連接SQL Server2000數(shù)據(jù)庫的相關(guān)設(shè)置技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10CORBA對(duì)象生命周期之實(shí)現(xiàn)和內(nèi)存管理
CORBA對(duì)象生命周期之實(shí)現(xiàn)和內(nèi)存管理...2006-10-10