Http請(qǐng)求長時(shí)間等待無結(jié)果返回解決辦法
Http請(qǐng)求長時(shí)間等待無結(jié)果返回解決辦法
今天遇到一個(gè)奇葩的問題,這個(gè)程序主要是用于調(diào)用接口搜集數(shù)據(jù)的,但是,發(fā)生了不好的事情就是服務(wù)器中啟動(dòng)的進(jìn)程非常多,一直無法結(jié)束,沒辦法只能采用kill的方法,將所有的這部分進(jìn)程殺掉。
分析了下程序,寫了個(gè)測(cè)試,本地跑依舊長時(shí)間等待,無法運(yùn)行,也不拋出異常,最后發(fā)現(xiàn)問題在于發(fā)送請(qǐng)求的部分,一直在等待對(duì)方服務(wù)器響應(yīng),由于采用的是keep-alive方式的連接,這里沒有采用超時(shí)的方式,以至于程序會(huì)長時(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)文章
網(wǎng)站圖片路徑的問題:絕對(duì)路徑/虛擬路徑
圖片和工程不在一個(gè)盤符下。圖片也不能放到工程下,下面與大家分享下詳細(xì)的解決方法2013-05-05
[JAVA]十四種Java開發(fā)工具點(diǎn)評(píng)
[JAVA]十四種Java開發(fā)工具點(diǎn)評(píng)...2006-10-10
在JSTL EL中處理java.util.Map,及嵌套List的情況
在EL中,方括號(hào)運(yùn)算符用來檢索數(shù)組和集合的元素。對(duì)于實(shí)現(xiàn) java.util.Map 接口的集合,方括號(hào)運(yùn)算符使用關(guān)聯(lián)的鍵查找存儲(chǔ)在映射中的值。2009-03-03
jsp+servlet+jdbc實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的增刪改查
本篇文章主要介紹了jsp+servlet+jdbc實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的增刪改查,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-01-01
JSP基于JDBC的數(shù)據(jù)庫連接類實(shí)例
這篇文章主要介紹了JSP基于JDBC的數(shù)據(jù)庫連接類,以實(shí)例形式較為詳細(xì)的分析了JDBC連接數(shù)據(jù)庫的實(shí)現(xiàn)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-11-11
JAVA/JSP學(xué)習(xí)系列之六(MySQL翻頁例子)
JAVA/JSP學(xué)習(xí)系列之六(MySQL翻頁例子)...2006-10-10
Java從服務(wù)器上獲取時(shí)間動(dòng)態(tài)顯示在jsp頁面實(shí)現(xiàn)思路
Java只能獲取一次,到頁面的時(shí)間是靜態(tài)的,不過通過js和Java的合作,巧妙地實(shí)現(xiàn)此功能2013-08-08

