Android网络编程

Android与互联网交互的三种方式

  1. 上传数据:使用GET/POST上传数据、图片、文本、视频、音频、XML、JSON,调用WebService数据
  2. 下载数据:下载网络中的数据、图片、文本、视频、音频、XML、JSON,调用WebService数据
  3. 浏览数据:通过WebView浏览网页

Http协议

1.什么是Http协议?

Http协议时TCP/IP协议的一个应用层协议,用于定义客户端与web服务器之间通讯的格式。

2.Http协议的底层工作流程

两个名词:

  1. SYN:TCP/IP建立连接时的握手信号。
  2. ACK:确认字符,确认发过来的数据已经接收无误。

TCP/IP三次握手

  1. 客户端发送syn包(syn = j)到服务器,进入SYN_SEND状态,然后等待服务器确认
  2. 服务器收到syn包,确认客户的syn(ack = j + 1),同时在自己也发送一个SYN包(syn=k), 即SYN + ACK包,服务器进入SYN_RECV状态
  3. 客户端收到SYN + ACK包,向服务器发送确认包ACK(ack = k +1),发送完毕后,客户端与服务端 进入ESTABLISHED状态,完成三次握手,然后两者开始传送数据

请求方式

  • GET
  • POST
  • HEAD
  • PUT
  • DELETE
  • TRACE
  • CONNECT
  • OPTIONS

GET与POST对比

  • GET:在请求的URL地址后以?的形式带上交给服务器的数据,多个数据之间以&分割,但数据容量通常不能超过2k,比如:http://xxx?username=…&pawd=…这种就是GET
  • POST:这个则可以在请求的实体内容中向服务器发送数据,数据容量没有限制
  • 注意:这两个玩意儿都是发送数据的,只是发送机制不一样。GET的安全性很低,POST的比较高,一般我们查询数据时使用GET,增删改的时候使用POST。

HTTP协议的特点

  1. 支持客户/服务器模式
  2. 简单快速
  3. 灵活
  4. 无连接
  5. 无状态

Android HTTP请求方式:HttpURLConnection

介绍

安卓4.4版本 HttpURLConnection已被替换成OkHttp了

使用步骤

  1. 创建一个URL对象: URL url = new URL(http://www.baidu.com);
  2. 调用URL对象的openConnection( )来获取HttpURLConnection对象实例:HttpURLConnection conn = (HttpURLConnection) url.openConnection();
  3. 设置HTTP请求使用的方法:GET或者POST,或者其他请求方式比如:PUT conn.setRequestMethod(“GET”);
  4. 设置连接超时,读取超时的毫秒数,以及服务器希望得到的一些消息头 conn.setConnectTimeout(6*1000); conn.setReadTimeout(6 * 1000);
  5. 调用getInputStream()方法获得服务器返回的输入流,然后输入流进行读取了 InputStream in = conn.getInputStream();
  6. 最后调用disconnect()方法将HTTP连接关掉 conn.disconnect();

Android HTTP请求方式:HttpClient

介绍

已弃用!

使用步骤

GET请求:

1. 创建HttpClient对象:HttpClient httpClient = new DefaultHttpClient();
2. HttpGet httpGet = new HttpGet("http://www.baidu.com");
3. httpClient.execute(httpGet);

POST请求:

1. 创建HttpClient对象:HttpClient httpClient = new DefaultHttpClient();
2. 创建一个 HttpPost 对象:HttpPost httpPost = new HttpPost("http://www.baidu.com");
3. 通过一个 NameValuePair 集合来存放待提交的参数
   List<NameValuePair> params = new ArrayList<NameValuePair>();
   params.add(new BasicNameValuePair("username", "admin"));
   params.add(new BasicNameValuePair("password", "123456"));
4. 将这个参数集合传入到一个UrlEncodedFormEntity中
   UrlEncodedFormEntity entity = new UrlEncodedFormEntity(params, "utf-8");
5.调用 HttpPost的 setEntity()方法将构建好的 UrlEncodedFormEntity传入
6.httpClient.execute(httpPost);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值