亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

java發送http請求,無需等待返回結果

java發送http請求,無需等待返回結果

慕田峪9158850 2019-05-24 11:09:58
與B項目進行交互,由于B項目一些原因,請求處理緩慢.A項目等待返回結果需要很久...現只需發送數據無需判斷發送成功失敗與否,求教如何操作???以下是發送get請求的代碼publicstaticStringdoGet(StringHTTP_URL,Objectobject){BufferedReaderreader=null;Stringresult=null;StringBufferhttpUrl=newStringBuffer(HTTP_URL);StringBuffersbf=newStringBuffer();try{System.out.println(httpUrl.toString());URLurl=newURL(httpUrl.toString());HttpURLConnectionconnection=(HttpURLConnection)url.openConnection();connection.setDoOutput(true);connection.setDoInput(true);//請求方式設置POSTconnection.setRequestMethod("GET");//設置維持長連接connection.setRequestProperty("Connection","Keep-Alive");//設置文件字符集:connection.setRequestProperty("Charset","UTF-8");//開始連接請求connection.connect();OutputStreamout=connection.getOutputStream();out.write((object.toString()).getBytes());out.flush();out.close();if(connection.getResponseCode()==200){System.out.println("連接成功,傳送數據...");InputStreamis=connection.getInputStream();reader=newBufferedReader(newInputStreamReader(is,"UTF-8"));StringstrRead=null;while((strRead=reader.readLine())!=null){sbf.append(strRead);sbf.append("\r\n");}reader.close();result=sbf.toString();if(result.equals("1")){return"1";}elseif(result.equals("0")){return"0";}else{returnresult;}}else{System.out.println("連接失敗,錯誤代碼:"+connection.getResponseCode());}}catch(Exceptione){e.printStackTrace();}returnnull;}
查看完整描述

2 回答

?
浮云間

TA貢獻1829條經驗 獲得超4個贊

HttpURLConnection有個setReadTimeout的方法可以實現你的需求。
publicstaticStringdoGet(StringHTTP_URL,Objectobject){
BufferedReaderreader=null;
Stringresult=null;
StringBufferhttpUrl=newStringBuffer(HTTP_URL);
StringBuffersbf=newStringBuffer();
HttpURLConnectionconnection=null;
try{
System.out.println(httpUrl.toString());
URLurl=newURL(httpUrl.toString());
connection=(HttpURLConnection)url.openConnection();
connection.setDoOutput(true);
connection.setDoInput(true);
//請求方式設置POST
connection.setRequestMethod("GET");
//設置維持長連接
connection.setRequestProperty("Connection","Keep-Alive");
//設置文件字符集:
connection.setRequestProperty("Charset","UTF-8");
//根據需求設置讀超時的時間
connection.setReadTimeout(50);
//開始連接請求
connection.connect();
OutputStreamout=connection.getOutputStream();
out.write((object.toString()).getBytes());
out.flush();
out.close();
if(connection.getResponseCode()==200){
System.out.println("連接成功,傳送數據...");
InputStreamis=connection.getInputStream();
reader=newBufferedReader(newInputStreamReader(is,"UTF-8"));
StringstrRead=null;
while((strRead=reader.readLine())!=null){
sbf.append(strRead);
sbf.append("\r\n");
}
reader.close();
result=sbf.toString();
if(result.equals("1")){
return"1";
}elseif(result.equals("0")){
return"0";
}else{
returnresult;
}
}else{
System.out.println("連接失敗,錯誤代碼:"+connection.getResponseCode());
}
}catch(Exceptione){
if(einstanceofSocketTimeoutException){
if("Readtimedout".equals(e.getMessage())&&connection!=null&&connection.getDoOutput()){
//TODO只請求不需要響應
returnnull;
}
}
e.printStackTrace();
}
returnnull;
}
                            
查看完整回答
反對 回復 2019-05-24
  • 2 回答
  • 0 關注
  • 3882 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號