導航:首頁 > 網路問題 > android處理網路請求異常處理機制

android處理網路請求異常處理機制

發布時間:2022-05-04 09:09:30

如何解決android使用HttpUrlConnection拋出異常

Android中HttpURLConnection拋出異常的解決方法: Http的URL鏈接, 會發生錯誤, 主要原因是 在主UI線程中, 使用網路調用(network call), 就拋出NetworkOnMainThreadException異常. 版本: API level 11以上. 可以使用一個簡單的線程, 在後台(asynctask)調用程序, 可以避免此情況; 否則 在getResponseCode()函數處, 拋出異常. Android API : 代碼: String quakeFeed = getString(R.string.quake_feed); url = new URL(quakeFeed); URLConnection connection; connection = url.openConnection(); HttpURLConnection httpConnection = (HttpURLConnection)connection; int responseCode = httpConnection.getResponseCode(); 修改: Thread t = new Thread(new Runnable() { @Override public void run() { refreshEarthquakes(); } }); t.start();

❷ Android請求伺服器報錯,請求的介面邏輯代碼較多,是因為超時而報的錯么當把請求的介面邏輯代碼

1**:請求收到,繼續處理
2**:操作成功收到,分析、接受
3**:完成此請求必須進一步處理
4**:請求包含一個錯誤語法或不能完成
5**:伺服器執行一個完全有效請求失敗

100——客戶必須繼續發出請求
101——客戶要求伺服器根據請求轉換HTTP協議版本

200——交易成功
201——提示知道新文件的URL
202——接受和處理、但處理未完成
203——返回信息不確定或不完整
204——請求收到,但返回信息為空
205——伺服器完成了請求,用戶代理必須復位當前已經瀏覽過的文件
206——伺服器已經完成了部分用戶的GET請求

300——請求的資源可在多處得到
301——刪除請求數據
302——在其他地址發現了請求數據
303——建議客戶訪問其他URL或訪問方式
304——客戶端已經執行了GET,但文件未變化
305——請求的資源必須從伺服器指定的地址得到
306——前一版本HTTP中使用的代碼,現行版本中不再使用
307——申明請求的資源臨時性刪除

400——錯誤請求,如語法錯誤
401——請求授權失敗
402——保留有效ChargeTo頭響應
403——請求不允許
404——沒有發現文件、查詢或URl
405——用戶在Request-Line欄位定義的方法不允許
406——根據用戶發送的Accept拖,請求資源不可訪問
407——類似401,用戶必須首先在代理伺服器上得到授權
408——客戶端沒有在用戶指定的餓時間內完成請求
409——對當前資源狀態,請求不能完成
410——伺服器上不再有此資源且無進一步的參考地址
411——伺服器拒絕用戶定義的Content-Length屬性請求
412——一個或多個請求頭欄位在當前請求中錯誤
413——請求的資源大於伺服器允許的大小
414——請求的資源URL長於伺服器允許的長度
415——請求資源不支持請求項目格式
416——請求中包含Range請求頭欄位,在當前請求資源范圍內沒有range指示值,請求
也不包含If-Range請求頭欄位
417——伺服器不滿足請求Expect頭欄位指定的期望值,如果是代理伺服器,可能是下
一級伺服器不能滿足請求

500——伺服器產生內部錯誤
501——伺服器不支持請求的函數
502——伺服器暫時不可用,有時是為了防止發生系統過載
503——伺服器過載或暫停維修
504——關口過載,伺服器使用另一個關口或服務來響應用戶,等待時間設定值較長
505——伺服器不支持或拒絕支請求頭中指定的HTTP版本

❸ android中okhttp怎麼處理異常

下面是獲取到json字元串。 enqueue就是非同步請求的意思。

OkHttpClient mHttpClient = new OkHttpClient();

Request request = new Request.Builder().url(url)
.build();
mHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
//載入失敗
}

@Override
public void onResponse(Response response) throws IOException {
//成功獲取數據
if (response.isSuccessful()){
String json = response.body().toString();
Log.d("mainai", "onResponse() returned: " + json);

}
}
});

❹ Android http請求,更新伺服器數據狀態成功,伺服器返回時如果網路中斷,怎麼處理

HTTP協議使用TCP協議傳輸的,因此在傳輸數據之前採用三次握手建立TCP連接。第4個包就是HTTP請求,然後是HTTP應答。你的問題是伺服器的應答包沒有收到,那太簡單了。首先是超時定時器到期提示網路無響應。然後可以重新連接即可。僅供參考~

手機網路異常怎麼解決

說到上網時的煩心事,沒有比手機總是提示網路異常更讓人惱火了,下面就讓我來為你介紹一下為什麼手機老顯示網路異常,以及相應的解決方法吧。



為什麼手機老顯示網路異常

1、可能是因為手機所在的網路信號不好,可以換另外一個地方再上網;

2、手機網路設置沒設置好,可以換另外一個接入點來上網,比較原來用CMNET來上網,可以換成用CMWAP接入點來上網;

3、手機自身系統的網路設置有點混亂了,導致在連接無線時會出現信號不好的情況。這時候我們可以嘗試一下開啟關閉一下飛行模式,看能否解決問題。手機運行程序過多也會影響信號問題,試著清理下手機;



4、伺服器問題,這通常表現為伺服器死機或關閉,這一般很少見,可以採用打電話咨詢網路服務商的方法解決;

5、確定手機軟體是否有問題。解決辦法更換軟體恢復手機出廠設置或刷機;

以上就是可能導致網路出現異常的幾個原因,希望能幫助大家解決網路異常現象。

❻ android中如何獲取超時時長的異常

android獲取超時時長的異常方式如下:設置超時機制
client.getParams().setIntParameter(
HttpConnectionParams.SO_TIMEOUT, TIME_OUT_DELAY); // 超時設置
client.getParams().setIntParameter(
HttpConnectionParams.CONNECTION_TIMEOUT, TIME_OUT_DELAY);// 連接超時
這里設置了兩種超時,第一種是請求超時,第二種時連接超時。
當向伺服器發出請求後,請求和伺服器建立socket連接,但是很長時間內都沒有建立socket連接,這就時第一種請求超時,這種情況主要發生在請求了
一個不存在的伺服器。超時之後,會拋出InterruptedIOException異常。
Timeout for blocking operations. The argument value is specified in
milliseconds. An InterruptedIOException is thrown if this timeout
expires.

❼ android在斷網的情況下如何處理HttpGet語句異常

程序運行的時候會一直連接網路,直到超時,應該會是連接異常的,怎麼會是空指針異常呢,一般空指針異常是會牽涉多處代碼的,自己看看其他地方是否有誤,另一方面可以將連接強轉為 HttpUrlConnection ,他有設置超時時間的方法,如果連接超時會報異常,然後自己處理一下就好了

❽ 安卓手機,時間段網路連接錯誤"連接失敗,請檢查手機網路",怎麼回事,又該怎麼解決

安卓手機無法正常上網,請檢查如下情況:
1、升級為4G套餐後如不重啟手機則無法正常使用上網功能;
2、確認是否有網路,建議您可在信號強的地方使用;
3、檢查帳戶是否還有話費,若余額不足則需充值後才能使用;
4、可關機3-5分鍾後,重啟手機再進行嘗試;
5、檢查USIM卡是否有插好,若已插好但還是無法使用,則建議您到營業廳檢查USIM卡是否有故障,或換卡測試;
6、如當月使用流量達到封頂值會自動關閉網路,建議您留意我司簡訊提醒或查詢套餐產品說明。

❾ android http連接意外中斷的異常怎麼處理

我估計是你沒有使用非同步機制打開網路,在UI線程中直接打開HTTP連接訪問網路是不對的,你要使用線程,如下:
// 在需要http連接網路的地方調用
new Thread(new Runnable(
public void run()

{
// 這里http連接伺服器

//若需要更新界面,可以結合Handler來處理,如下

updateHandler.sentMessage(XXXX);//具體要傳什麼參數需要自己定義

}

)).start();

❿ 請簡述什麼是android事件處理,並分析兩種android事件處理機制的實現過程和區別

UI編程通常都會伴隨事件處理,Android也不例外,它提供了兩種方式的事件處理:基於回調的事件處理和基於監聽器的事件處理。

對於基於監聽器的事件處理而言,主要就是為Android界面組件綁定特定的事件監聽器;對於基於回調的事件處理而言,主要做法是重寫Android組件特定的回調函數,Android大部分界面組件都提供了事件響應的回調函數,我們主要重寫它們就行。


一 基於監聽器的事件處理

相比於基於回調的事件處理,這是更具「面向對象」性質的事件處理方式。在監聽器模型中,主要涉及三類對象:

1)事件源Event Source:產生事件的來源,通常是各種組件,如按鈕,窗口等。

2)事件Event:事件封裝了界面組件上發生的特定事件的具體信息,如果監聽器需要獲取界面組件上所發生事件的相關信息,一般通過事件Event對象來傳遞。

3)事件監聽器Event Listener:負責監聽事件源發生的事件,並對不同的事件做相應的處理。


基於監聽器的事件處理機制是一種委派式Delegation的事件處理方式,事件源將整個事件委託給事件監聽器,由監聽器對事件進行響應處理。這種處理方式將事件源和事件監聽器分離,有利於提供程序的可維護性。

舉例:

View類中的OnLongClickListener監聽器定義如下:(不需要傳遞事件)


[java] view plainprint?

public interface OnLongClickListener {

boolean onLongClick(View v);

}

public interface OnLongClickListener {
boolean onLongClick(View v);
}


View類中的OnLongClickListener監聽器定義如下:(需要傳遞事件MotionEvent)

[java] view plainprint?

public interface OnTouchListener {

boolean onTouch(View v, MotionEvent event);

}

public interface OnTouchListener {
boolean onTouch(View v, MotionEvent event);
}

二 基於回調的事件處理

相比基於監聽器的事件處理模型,基於回調的事件處理模型要簡單些,該模型中,事件源和事件監聽器是合一的,也就是說沒有獨立的事件監聽器存在。當用戶在GUI組件上觸發某事件時,由該組件自身特定的函數負責處理該事件。通常通過重寫Override組件類的事件處理函數實現事件的處理。

舉例:

View類實現了KeyEvent.Callback介面中的一系列回調函數,因此,基於回調的事件處理機制通過自定義View來實現,自定義View時重寫這些事件處理方法即可。

[java] view plainprint?

public interface Callback {

// 幾乎所有基於回調的事件處理函數都會返回一個boolean類型值,該返回值用於

// 標識該處理函數是否能完全處理該事件

// 返回true,表明該函數已完全處理該事件,該事件不會傳播出去

// 返回false,表明該函數未完全處理該事件,該事件會傳播出去

boolean onKeyDown(int keyCode, KeyEvent event);

boolean onKeyLongPress(int keyCode, KeyEvent event);

boolean onKeyUp(int keyCode, KeyEvent event);

boolean onKeyMultiple(int keyCode, int count, KeyEvent event);

}

public interface Callback {
// 幾乎所有基於回調的事件處理函數都會返回一個boolean類型值,該返回值用於
// 標識該處理函數是否能完全處理該事件
// 返回true,表明該函數已完全處理該事件,該事件不會傳播出去
// 返回false,表明該函數未完全處理該事件,該事件會傳播出去
boolean onKeyDown(int keyCode, KeyEvent event);
boolean onKeyLongPress(int keyCode, KeyEvent event);
boolean onKeyUp(int keyCode, KeyEvent event);
boolean onKeyMultiple(int keyCode, int count, KeyEvent event);
}

三 比對

基於監聽器的事件模型符合單一職責原則,事件源和事件監聽器分開實現;

Android的事件處理機制保證基於監聽器的事件處理會優先於基於回調的事件處理被觸發;

某些特定情況下,基於回調的事件處理機制會更好的提高程序的內聚性。


四 基於自定義監聽器的事件處理流程

在實際項目開發中,我們經常需要自定義監聽器來實現自定義業務流程的處理,而且一般都不是基於GUI界面作為事件源的。這里以常見的app自動更新為例進行說明,在自動更新過程中,會存在兩個狀態:下載中和下載完成,而我們的程序需要在這兩個狀態做不同的事情,「下載中」需要在UI界面上實時顯示軟體包下載的進度,「下載完成」後,取消進度條的顯示。這里進行一個模擬,重點在說明自定義監聽器的事件處理流程。

4.1)定義事件監聽器如下:

閱讀全文

與android處理網路請求異常處理機制相關的資料

熱點內容
區域網路由器如何設置網路連接 瀏覽:375
wifi設置網路拒絕接入什麼意思 瀏覽:389
同時顯示5g信號的網路 瀏覽:522
wifi的訪客網路是什麼 瀏覽:183
網路機頂盒如何添加自定義字幕 瀏覽:153
wifi網路頻帶和網路通道 瀏覽:512
手機應用商店怎麼沒有數據網路 瀏覽:227
怎麼在網路里添加共享電腦 瀏覽:704
手機顯示被禁用網路 瀏覽:323
計算機網路fcs怎麼獲得 瀏覽:881
戴爾公司現有的網路營銷情況 瀏覽:678
網路車資格證怎麼辦理 瀏覽:146
網路電話怎麼改95開頭的 瀏覽:86
怎麼改動學校計算機網路 瀏覽:267
win10共享lan網路 瀏覽:539
電腦做網路圖怎麼做 瀏覽:838
妖刀網路作家在哪裡寫小說 瀏覽:861
有多少網路平台可以聊天的 瀏覽:719
防水什麼意思網路用語 瀏覽:232
山上沒網路沒無線怎麼辦 瀏覽:809

友情鏈接