android監聽請求網路連接
1. android中如何監聽到其他應用的網路請求數據
目前android提供的抄工具沒事,我們寫工程都是自己寫http請求,每次請求的時候打Log,記錄請求的url和參數。請求回來了,打log,記錄回來的數據,記錄數據的狀態,數據的內容。 目前只能這樣。如果用模擬器的話,可以用vnStat或者CommView之類的監控電腦網卡的請求,間接的監控手機。一般開發用手機測試,這樣就不行了。只能打log了
2. android開發怎麼監聽網路請求
Android中網路情況時有變化,比如從有網到沒網,從wifi到gprs,gprs又從cmwap到cmnet...等等!
如果你的程序有些功能是需要網路支持的,有時候就需要監聽到網路的變化情況進行相應的處理。
比如說下載一個文件,如果突然斷網了,怎麼處理?網路又恢復了,如何監聽到並重連?
當網路變化的時候系統會發出義個廣播broadcast,只要在程序中注冊一個廣播接收器BroadcastReceiver,並在IntentFilter中添加相應的過濾,這樣一旦網路有變化,程序就能監聽到
public static final String CONNECTIVITY_CHANGE_ACTION = "android.net.conn.CONNECTIVITY_CHANGE";
private void registerDateTransReceiver() {
Log.i(TAG, "register receiver " + CONNECTIVITY_CHANGE_ACTION);
IntentFilter filter = new IntentFilter();
filter.addAction(CONNECTIVITY_CHANGE_ACTION);
filter.setPriority(1000);
registerReceiver(new MyReceiver(), filter);
}
在MyReceiver中:
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.i(TAG, "PfDataTransReceiver receive action " + action);
if(TextUtils.equals(action, CONNECTIVITY_CHANGE_ACTION)){//網路變化的時候會發送通知
Log.i(TAG, "網路變化了");
return;
}
}
當網路變化時,從有網到沒網也會發廣播,就舉的例子來說,如果下載時斷網了,接收到廣播的時候要判斷當前網路是可用還是不可用狀態,如果可用進行什麼操作;不可用進行什麼操作:
public static NetworkInfo getActiveNetwork(Context context){
if (context == null)
return null;
ConnectivityManager mConnMgr = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (mConnMgr == null)
return null;
NetworkInfo aActiveInfo = mConnMgr.getActiveNetworkInfo(); // 獲取活動網路連接信息
return aActiveInfo;
}
這個方法返回的aActiveInfo可以判斷網路的有無,如果返回的是null,這時候是斷網了,如果返回對象不為空,則是連上了網。在返回的NetworkInfo對象里,可以有對象的方法獲取更多的當前網路信息,比如是wifi還是cmwap等,就不多說了。
3. android 可以監聽okhttp的網路請求嗎
1、首先 創建 一個mOkHttpClient = new OkHttpClient()對象;
2、構建Request請求對象(根據get和post不同的請求方式分別創建);
3、如果是 post請求還需要 構建 請求參數 Params,RequestBody requestBody = buildFormData(params); builder.post(requestBody).build;;
4、進行網路非同步請求 mOkHttpClient.newCall(request).enqueue(new Callback() {} ),如果是同步請求,則改為 Response response = mOkHttpClient.newCall(request).execute()進行 ;
具體實現就不細說了,直接上代碼如下:
[html] view plain
public class OkHttpManager {
private static OkHttpManager mOkHttpManager;
private OkHttpClient mOkHttpClient;
4. android 在監聽到網路狀態變化後的操作
監聽到變化後,用handler發送Message給你的MainActivity啊,讓你的MainActivity去操作UI的變化
5. android 怎麼監控網路狀態可以訪問互聯網而不是連接狀態
解決方案如下:
1;在onCreate中調用如下函數即可, Intent intent) {
ConnectivityManager connectMgr = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE),涉及到要進行網路訪問.CONNECTIVITY_ACTION);/!mobNetInfo、在適當的地方注冊Receiver.getNetworkInfo(ConnectivityManager; connect network
}
}
}、定義一個Receiver重載其中的onReceive函數;
2;
if (.getNetworkInfo(ConnectivityManager;
intentFilter,時常需要進行網路狀態的檢查、手機狀態發生改變時;/.isConnected()) {
Log;),只要一下幾個步驟即可,以提供給用戶必要的提醒;
/.TYPE_WIFI).TYPE_MOBILE):
1:
IntentFilter intentFilter = new IntentFilter(), intentFilter),可以在程序中注冊, UMTS等)
2.isConnected() && 。一般可以通過ConnectivityManager來完成該工作,在其中完成所需要的功能;
NetworkInfo wifiNetInfo = connectMgr;
NetworkInfo mobNetInfo = connectMgr;
registerReceiver(connectionReceiver:
if (connectionReceiver 。
ConnectivityManager有四個主要任務:
connectionReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context、為應用程序提供可以獲取可用網路的高精度和粗糙的狀態
當我們要在程序中監聽網路狀態時、監聽手機網路狀態(包括GPRS!= null) {
unregisterReceiver(connectionReceiver)、當一個網路連接失敗時進行故障切換
4; unconnect network
}else {
/!wifiNetInfo,WIFI,在onDestroye中調用如下函數即可, ",發送廣播
3:
復制代碼 代碼如下:
復制代碼 代碼如下:
1,如根據WIFI和GPRS是否斷開來改變空間的外觀
復制代碼 代碼如下,可以在程序中取消在開發android應用時、在適當時取消注冊Receiver;unconnect".addAction(ConnectivityManager.i(TAG
6. 如何監控android網路請求
如果你想在logcat用列印的方式監控的話可以在發送請求的地方打log;
也可以用抓專包工具進行網路請求屬的抓取,這樣的優勢在於你可以看到HTTP請求的具體信息,如post提交的內容,請求頭信息,伺服器返回錯誤等信息。常用的抓包工具有fiddler,Wireshark等,具體配置過程可以搜索相關教程。
7. Android中判斷是否有網路連接以及網路監控狀態
獲取網路信息需要在AndroidManifest.xml文件中加入相應回的許可權。答
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
8. Android 網路監聽
B頁面加入一個靜態變數Boolean isStarted = false;
在啟動後置為true,detroy 時置為 false。
在網路處理中判斷isStarted 的值,如果為true,return。
9. Android使用廣播監聽網路狀態變化 一直收到系統廣播
因為這個系統廣播在不停的發送,系統網路狀態在不停的變化。比如關閉,打開,掃描,正在連接,已連接等狀態。
10. android中如何用廣播監聽網路變化,將其顯示在通知欄上
網路狀態發生變化的時候,系統會發出 android.net.conn.CONNECTIVITY_CHANGE .
下面是實現的 demo :
package mark.zhang;
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.IBinder;
import android.util.Log;
public class ListenNetStateService extends Service {
private ConnectivityManager connectivityManager;
private NetworkInfo info;
private BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
Log.d("mark", "網路狀態已經改變");
connectivityManager = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
info = connectivityManager.getActiveNetworkInfo();
if(info != null && info.isAvailable()) {
String name = info.getTypeName();
Log.d("mark", "當前網路名稱:" + name);
} else {
Log.d("mark", "沒有可用網路");
}
}
}
};
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
IntentFilter mFilter = new IntentFilter();
mFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(mReceiver, mFilter);
}
@Override
public void onDestroy() {
super.onDestroy();
unregisterReceiver(mReceiver);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return super.onStartCommand(intent, flags, startId);
}
}