Android网络请求框架第一弹——起始篇


概述:此篇博客是我Android框架的第一章网络请求框架系列文章的第一篇。该系列文章,讲从最基本的网络请求讲起。

一 基本概念

1 url

URL 全称是Uniform Resource Locator,即统一资源定位符,通过一个 URL,可以找到互联网上唯一的一个资源
URL就是资源的地址、位置,互联网上每个资源都有UI个唯一的URL
基本格式:协议://主机地址/路径
-协议:不同的协议,代表着不同的资源查找方式,资源传输方式
-主机地址:存放资源的主机的IP地域
-路径:资源在主机中的位置

2 协议

Android 开发都是在客户端,对应的是网络七层的应用层。那么应用的层的协议有两种:http 和 https
HTTPS和HTTP的区别主要为以下四点:
a、https协议需要到ca申请证书,一般免费证书很少,需要交费。
b、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
c、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
d、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全
总结 如果对安全性没有非常高的要求,都是使用http协议

3 httpClient和httpUrlConnection

大多数的Android应用程序都会使用HTTP协议来发送和接收网络数据,而Android中主要提供了两种方式来进行HTTP操作,HttpURLConnection和HttpClient。这两种方式都支持HTTPS协议、以流的形式进行上传和下载、配置超时时间、IPv6、以及连接池等功能。
HttpClient是个很不错的开源框架,封装了访问http的请求头,参数,内容体,响应等等, DefaultHttpClient和它的兄弟AndroidHttpClient都是HttpClient具体的实现类,它们都拥有众多的API,而且实现比较稳定,bug数量也很少。
但同时也由于HttpClient的API数量过多,使得我们很难在不破坏兼容性的情况下对它进行升级和扩展,所以目前Android团队在提升和优化HttpClient方面的工作态度并不积极。
HttpURLConnection是java的标准类,什么都没封装,用起来太原始,不方便,比如重访问的自定义,以及一些高级功能等。HttpURLConnection是一种多用途、轻量极的HTTP客户端,使用它来进行HTTP操作可以适用于大多数的应用程序。虽然HttpURLConnection的API提供的比较简单,但是同时这也使得我们可以更加容易地去使用和扩展它。
那么问题来了,我们到底该使用哪种方式呢:
简单讲,httpClient是httpUrlConnection的增强版,httpUrlConnection能做的httpClient全能做。在Android2.3以下版本由于HttpUrlConnection存在讨厌的bug,所以推荐使用httpClient 在Android2.3以上版本修复了这些bug,并在Android4.0版本加入了响应缓存的机制 ,所以推荐使用HttpUrlConnection
总结:java和Android2.3以下版本推荐使用httpClient Android2.3以上版本推荐使用HttpUrlConnection。

4 请求方式

在http协议下,有两种常用的请求方式,get请求和post请求

a get和post 的本质区别

get是用来获取数据的  post是用来修改数据的

b get和post的使用方式区别:

1 GET使用URL或Cookie传参。而POST将参数放在requestBody中。
2 GET的URL会有长度上的限制 128k,则POST的数据则可以非常大。
3 POST比GET安全,因为参数数据在地址栏上不可见。

5 request 和 response

a request表示请求 response表示响应 他们的结构如下:

项目requestresponse
第一行请求行:请求方式 + 资源名称 + HTTP协议版本号协议版本号 + 状态码
headRequest HeaderResponse Head
bodyRequest BodyResponse Body

request:
这里写图片描述

response:
这里写图片描述

head和body之间都有一个空行

b request 常用的head的字段

这里写图片描述这里写图片描述

c response 常用个head字段

这里写图片描述

二 总结

1 对于安全性没有很高要求的情况下 ,我们使用http协议。

2 在Android开发过程中,目前我们采用HttpUrlConnection方式,作为底层请求。

3 get用于请求数据,post用于修改数据。如果一般获取数据使用get ,如果不想请求参数暴露在url中,使用post请求方式。视具体的请求API决定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值