Skip to content

网络

864字约3分钟

2024-05-28

自带Http模块

获取内容 get函数
Http.get(url,cookie,charset,header,callback)
url 网络请求的链接网址
cookie 使用的cookie,也就是服务器的身份识别信息
charset 内容编码
header 请求头
callback 请求完成后执行的函数

除了url和callback其他参数都不是必须的

回调函数接受四个参数值分别是
code 响应代码,2xx表示成功,4xx表示请求错误,5xx表示服务器错误,-1表示出错
content 内容,如果code是-1,则为出错信息
cookie 服务器返回的用户身份识别信息
header 服务器返回的头信息

向服务器发送数据 post函数
Http.post(url,data,cookie,charset,header,callback)
除了增加了一个data外,其他参数和get完全相同
data 向服务器发送的数据

下载文件 download函数
Http.download(url,path,cookie,header,callback)
参数中没有编码参数,其他同get,
path 文件保存路径

需要特别注意一点,只支持同时有127个网络请求,否则会出错


Http其实是对Http.HttpTask的封装Http.HttpTask使用的更加通用和灵活的形式
参数格式如下
Http.HttpTask( url, String method, cookie, charset, header,  callback) 
所有参数都是必选,没有则传入nil

url 请求的网址
method 请求方法可以是get,postputdelete等
cookie 身份验证信息
charset 内容编码
header 请求头
callback 回调函数

该函数返回的是一个HttpTask对象,
需要调用execute方法才可以执行,
t=Http.HttpTask(xxx)
t.execute{data}

注意调用的括号是花括号,内容可以是字符串或者byte数组,
使用这个形式可以自己封装异步上传函数

TrafficStats类

import "android.net.TrafficStats"
getMobileRxBytes()  --获取通过Mobile连接收到的字节总数,不包含WiFi  
getMobileRxPackets()  --获取Mobile连接收到的数据包总数  
getMobileTxBytes()  --Mobile发送的总字节数  
getMobileTxPackets()  --Mobile发送的总数据包数  
getTotalRxBytes()  --获取总的接受字节数,包含Mobile和WiFi等  
getTotalRxPackets()  --总的接受数据包数,包含Mobile和WiFi等  
getTotalTxBytes()  --总的发送字节数,包含Mobile和WiFi等  
getTotalTxPackets()  --发送的总数据包数,包含Mobile和WiFi等   
getUidRxBytes(int uid)  --获取某个网络UID的接受字节数  
getUidTxBytes(int uid) --获取某个网络UID的发送字节数   
--例:TrafficStats.getTotalRxBytes()

开启关闭WiFi

import "android.content.Context"
wifi = activity.Context.getSystemService(Context.WIFI_SERVICE)
wifi.setWifiEnabled(true)--关闭则false

断开网络

import "android.content.Context"
wifi = activity.Context.getSystemService(Context.WIFI_SERVICE)
wifi.disconnect()

WiFi是否打开

import "android.content.Context"
wifi = activity.Context.getSystemService(Context.WIFI_SERVICE)
wi = wifi.isWifiEnabled()

WiFi是否连接

connManager = activity.getSystemService(Context.CONNECTIVITY_SERVICE)
    mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
    if tostring(mWifi):find("none)")  then
    --未连接
    else
    --连接
    end

数据网络是否连接

manager = activity.getSystemService(Context.CONNECTIVITY_SERVICE);  
gprs = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();  
if tostring(gprs)== "CONNECTED" then
print"当前数据网络"
end

获取WiFi信息

import "android.content.Context"
wifi = activity.Context.getSystemService(Context.WIFI_SERVICE)
 wifi.getConfiguredNetworks()

获取WiFi状态

import "android.content.Context"
wifi = activity.Context.getSystemService(Context.WIFI_SERVICE)
print(wifi.getWifiState())

IP地址

--查看某网站IP地址
address=InetAddress.getByName("www.10010.com");

--查看本机IP地址
address=InetAddress.getLocalHost();

--查看IP地址
wifi = activity.Context.getSystemService(Context.WIFI_SERVICE).getDhcpInfo()
string.match(tostring(wifi),"ipaddr(.-)gate")

获取Dns

import "android.content.Context"

--获取Dns1
wifi = activity.Context.getSystemService(Context.WIFI_SERVICE).getDhcpInfo()
 print(string.match(tostring(wifi),"dns1 (.-) dns2"))

--获取Dns2
wifi = activity.Context.getSystemService(Context.WIFI_SERVICE).getDhcpInfo()
 dns2 = string.match(tostring(wifi),"dns2 (.-) D")

获取网络名称

wifiManager=activity.Context.getSystemService(Context.WIFI_SERVICE);
wifiInfo=wifiManager.getConnectionInfo();
print(wifiInfo.getSSID())

获取WiFi加密类型

wifi = activity.Context.getSystemService(Context.WIFI_SERVICE).getConfiguredNetworks()
print(string.match(tostring(wifi),[[KeyMgmt: (.-) P]]))

获取网络信号强度

wifiManager=activity.Context.getSystemService(Context.WIFI_SERVICE);
wifiInfo=wifiManager.getConnectionInfo();
print(wifiInfo.getRssi())

获取SSID是否被隐藏

wifiManager=activity.Context.getSystemService(Context.WIFI_SERVICE);
wifiInfo=wifiManager.getConnectionInfo();
print(wifiInfo.getHiddenSSID())

获取Mac地址

wifiManager=activity.Context.getSystemService(Context.WIFI_SERVICE);
wifiInfo=wifiManager.getConnectionInfo();
print( wifiInfo.getMacAddress())