Android之网络通信·Web通讯

网络通信

1 Web通讯

基于Http的网络连接

Android包中有多重方式实现Http网络连接。如java.netorg.apache.http,原理基本一致。

    通过org.apache.http3步实现网络通讯:

1.派生实例化HttpClient对象,发起和管理所有网络请求。

2.实例化HttpUriRequest接口的子对象,如HttpGetHttpPostHttpHeader,用于表示不同类型的Http请求。

3.等待服务器响应,获取HttpResponse对象,进而获取web服务返回的数据和响应信息。

 

    开发者需要在请求结束后调用HttpEntity.consumeContent显性释放网络连接的缓冲区内容,表示该请求完成。

 

    HttpClient发送请求钱,可以通过HttpParams对象调整网络请求参数。

 

联网方式的选择

Android联网并不需要关注设备的具体联网方式,因为Android系统会自动托管对联网方式的管理和选择。

Android支持GPRSCDMAWimaxWifi等多种联网方式。每种联网模式下,都会有可供选择的连接点Access Point每个连接点都包含具体的联网设置。依据这些配置,Android可以通过不同的联网方式访问互联网服务。

如果一个连接点在当前环境中可用,可以根据这些配置联网。(可用连接点)系统可以通过任意一个可用连接点连接网络,但不同的连接点意味着不同的连接速度和花费开销。

Android中,连接点选择的工作封装在底层,网络管理服务会从可用连接点选择一个最好的作为当前连接点,整个系统的所有应用都通过它连接网络,不再需要各个应用分别选择,似的联网变得简单自然。

Android对最好连接点选择是一个静态策略,根据不同联网方式的先验知识作出判断,不是根据当前实际的联网速度选择。在该策略下,优先选择Wifi;如果所有Wifi不可用,则依次选择3G网络、EDGD网络、GPRS网络。

Android会时刻关注连接点的可用性,一旦当前连接点变成不可用状态,会立刻切换。使用最新的最优的可用连接点;与之类似,如果出现了高优先级的连接点,Android也会切换。

    代码中,通过ConnectivityManager查看和管理当前的联网方式。ConnectivityManager.getActiveNetworkInfo获得当前联网方式;

 

    与通信网络相关的连接点信息存储在连接点数据源中,通过查询该数据源可用获得连接点相关的代理信息。

 

Wifi管理

Wifi的联网优先级最高,联网速度快,流量价格低。用户身边的Wifi连接点可能不停的变换,需要不断检测和调整,才能保证充分利用Wifi连接网络。

    WifiManager管理和获取Wifi连接的信息。WifiManager.startScan搜索周边可用的Wifi,扫描完成后通过广播事件通知监听者,Android调用WifiManager.getScanResults获取扫描结果。

 

WifiManager.getConfiguredNetwork获取所有可用的连接点

猜你喜欢

转载自aoyouzi.iteye.com/blog/1995695
今日推荐