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);
}
}