Android网络通信

来源:互联网 发布:php web服务器搭建 编辑:程序博客网 时间:2024/06/02 20:26

Android网络通信分类

Android使用HTTP和Socket两种方式进行网络分类,其中HTTP又包括HttpClient和HttpURLConnection两种编程方式。

获取网络状态

Android中可以使用ConnectivityManager类来获取当前设备的网络状态,这个类的主要作用如下:

  • 监控网络连接(Wi-Fi、GPRS、UMTS等);
  • 当网络连接状态发生改变时,发生广播消息;
  • 在连接中断的时候试图转移到其他网络连接;
  • 给应用提供一个查询网络状态是否可用的API;
    以下为获取当前网络状态示例代码:
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);        NetworkInfo info = cm.getActiveNetworkInfo();if(info==null){    Toast.makeText(this, "没有联网", Toast.LENGTH_SHORT).show();}else{    Toast.makeText(this, info.getTypeName(), Toast.LENGTH_SHORT).show();}

注意:在获取网络状态时,要在AndroidManifest.xml中声明权限:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

HTTP协议介绍

HTTP协议是一种应用层协议,HTTP是HyperText Transfer Protocol(超文本传输协议)的英文缩写。。最新稳定版本HTTP1.1。

HTTP请求

一个HTTP链接的示例如:http://host[“:”port][abs_path],它其中每一段表示的信息如下:

  • http:表示通过HTTP协议来定位网络资源;
  • host:表示合法的Internet主机域名或者IP地址;
  • port:指定一个端口号,为空则使用缺省端口80。
  • abs_path:指定请求资源的URI,例如输入:www.anjoyo.com,浏览器自动转换成:http://www.anjoyo.com/

HTTP请求方法

HTTP请求方法中最常用的两种是GET()和POST()。GET()和POST()方法主要有一下三点区别:
1、POST请求可以向服务器传送数据,而且数据放在HTML HEADER内一起传送到服务器URL地址,数据对用户不可见。儿GET是把参数数据队列加到提交的URL中,值和表单内各个字段一一对应,例如(http://www.baidu.com/s?w=%C4&inputT=2710)
2、GET传送的数据量小,不能大于2KB。POST传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中最大量为100KB。
3、GET安全性小非常低,POST安全性非常高。

HTTP响应和状态码

HTTP响应也是由三个部分组成:状态行、消息报头、响应正文,一并发给客户端,状态行包括状态码:

  • 1xx:指示信息,表示请求已接收,继续处理。
  • 2xx:成功,表示请求已被成功接收,理解,接受。
  • 3xx:重定向,要完成请求必须进行更进一步的操作。
  • 4xx:客户端错误,请求有语法错误或请求无法实现。
  • 5xx:服务器端错误,服务器未能实现合法的请求。
0 0
原创粉丝点击