Android的网络编程

Android的网络编程

HTTP通信方式、Socket通信方式

HTTP的简介:

首先HTTP全称是Hyper Text Transfer Protocol,翻译过来叫超文本传输协议,看起来很高端的名字,实际上他就是字面意思,就比如你想知道“HTTP协议是什么”,服务器上呢有个超文本,就姑且当他是个记事本里面记录着“HTTP协议是什么”的答案,你想要,那么服务器就和你约定好了用“顺丰快递传”,所以这就是传输超文本的协议。

第二它是一个属于应用层的协议,什么叫应用层,简单说就是和应用进程交互 的层,想想应用里面有什么好交互的,当然是数据了,也就是说这一层解决的是如何包装数据的。

特点

C/S模式,快递员服务于客户。

简单:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST,每种方法规定了客户与服务器联系的类型不同。

快速:由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。但是这种方式在请求频繁的条件下,将会在建立和断开连接上花费大部分时间,所以在1.0、1.1持久连接变为了默认连接方式,有兴趣的可以自己查一下这个方式。

无状态:HTTP协议是无状态协议。无状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

Android p的http网络请求的问题

Android p 要求默认使用加密连接,禁止App使用任何未加密的连接,需要使用TLS传输层安全协议,也就是Https

更改网络安全配置

在res新增xml目录,创建network_security_config.xml,开启http请求。

在AndroidManifestxml中的application标签增加以下属性


Android的Https

自定义X509TrustManager

在使用HttpsURLConnection发起HTTPS请求的时候,提供了一个自定义的x509T rus tManager,未实现安全校验逻辑

如果不提供自定义X509TrustManager,代码运行起来可能会报异常

自定义HostnameVerifier

在握手期间,如果URL的主机名和服务器的标识主机名不匹配,则验证机制可以回调此接口的实现程序来确定是否应该允许此连接。


URL类

统-资源定位符(URL) 是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示, 是互联网上标准资源的地址

互联网上的每个文件都有一个唯一 的URL

URL类提供了多个构造器用于创建URL对象

URL类提供多个方法访问URL对应的资源:

URLConnection openConnection( ):返回一个URLConnection对象,它表示到URL所引用的远程对象的连接。

InputStream openStream(): 打开此URL的连接,并返回一个用于读取该URL资源的InputStream。

Android常用的网络编程框架

OkHttp 简介

1 OKhttp的优势:

(1)允许连接到同一个主机地址的所有请求,提高请求效率

(2)共享Socket,减少对服务器的请求次数

(3)通过连接池,减少了请求延迟

(4)缓存响应数据来减少重复的网络请求

(5)减少了对数据流量的消耗

(6)自动处理GZip压缩

1 OKhttp的功能:

(1)get,post请求

(2)文件的上传下载

(3)加载图片(内部会图片大小自动压缩)

(4)支持请求回调,直接返回对象、对象集合

(5)支持session的保持

HTTP   get 异步请求

1:异步请求方式,请求的回调会在子线程里,所以如果需要更新UI你需要切换到主线程。且你不需要在new 一个线程包裹这个异步请求了。

2:在异步请求方法里,请不要将 public void onResponse(Call call, final Response response)回调里的response回调数据放到UI线程里解析,因为有一个天坑,有可能在UI线程里解析的时候response里面却还没有塞入数据(我也觉得很神奇,不知道写okhttp的公司是怎么想的,为什么不处理完所有数据在提供回调)。


Post请求

图片加载框架Glide

Glide是一款图片加载框架,可以在Android平台上以简单的方式加载和展示图片。

Glide集成okHttp加载https图片

dependencies {

  compile 'com.github.bumptech.glide:glide:3.7.0'

}

Glide加载https图片

第一步、定义一个带https的请求

第二步:定义ModelLoader和ModelLoader.Factory

第三步、ModelLoader的getResourceFetcher返回一个DataFetcher,我们给它传入一个OkHttpClient实例,让它通过OkHttpClient发起请求

第四步、自定义一个GlideModule,在OkHttpsGlideModule中进行关联

第五步、在AndroidManifest.xml中的<application>标签下定义<meta-data>,这样Glide才能知道我们定义了这么一个类,其中android:name是我们自定义的GlideModule的完整路径,而android:value就固定写死GlideModule。注册后glide就可以自动加载https图片了。

Volley功能有:

JSON,图像等的异步加载;

网络请求的排序;

网络请求的优先级处理;

图片缓存;

多级别取消请求;

和Activity生命周期的联动(Activity结束时同时取消所有网络请求)等。      

Volley加载网络图片:


ImageLoader

用法:

1. 创建一个RequestQueue对象。

2. 创建一个ImageLoader对象。

3. 获取一个ImageListener对象。

4. 调用ImageLoader的get()方法加载网络上的图片。

ImageRequest

用法:

1. 创建一个RequestQueue对象。

2. 创建一个Request对象。

3. 将Request对象添加到RequestQueue里面。


NetworkImageView

用法:

1. 创建一个RequestQueue对象。

2. 创建一个ImageLoader对象。

3. 在布局文件中添加一个NetworkImageView控件。

4. 在代码中获取该控件的实例。

5. 设置要加载的图片地址。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 222,252评论 6 516
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,886评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,814评论 0 361
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,869评论 1 299
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,888评论 6 398
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,475评论 1 312
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 41,010评论 3 422
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,924评论 0 277
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,469评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,552评论 3 342
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,680评论 1 353
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,362评论 5 351
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,037评论 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,519评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,621评论 1 274
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,099评论 3 378
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,691评论 2 361

推荐阅读更多精彩内容