android 网络请求总结

1 先看下基础部分:

android okhttp网络访问是基于 tcp/ip 的

最上层是应用层的封装,有http,https(加密),ftp

下面是socket套接字的封装,就是将ip和端口的封装

在下面就是tcp/udp 在下面 ip协议层了。

2 下面看下常用的http/https请求方式

Volley:四个网络调度线程和一个缓存调度线程 适用范围:非大文件(缓存过大影响内存),非频繁数据(线程池线程数小)

OKHttp:用起来有点麻烦,使用时需要一定的经验,比如我的总结:

1 OkHttpClient是线程池和连接池的最小单位,能复用就复用,不然会产生多个线程池和连接池

2 可以用OkHttpClient对象newbuilder()来实现定制新的client请求,依然能实现共享线程池和连接池。

3 内部是quene的方式执行,但无法返回过来的也是顺序过来,需要及时cancel掉对应的call

对应的回调是 java.net.SocketException: Socket closed

关闭方案:

//添加tag

Request request = new Request.Builder().

url(url).tag("requestKey").build();

//When you want to cancel:

//关闭等待队列里的

for (Call call : mHttpClient.dispatcher().queuedCalls()) {

if (call.request().tag().equals("requestKey"))

call.cancel();

}

//B)关闭执行线程池里执行的call(running队列也包含)

for (Call call : mHttpClient.dispatcher().runningCalls()) {

if (call.request().tag().equals("requestKey"))

call.cancel();

}

3 改进方案思考

1 okhttp里用到的okio 是不是可以用mmap来替代,而它的缓存机制仍保留

2 网路差的时候是不是可以自动改为udp方式

期待我的改进版本的okhttp不,期待,我就把这两项给弄了

相关推荐
阿里云云原生1 小时前
可用性从 99.9% 跃升至 99.995%:畅捷通如何用 AI 重塑运维底座?
运维·网络·人工智能
kisloy2 小时前
【爬虫入门第13讲】Scrapy 框架深度解析(四)核心配置与自定义扩展
网络·爬虫·scrapy
夜雪一千4 小时前
TCP数据包长什么样?拆解TCP报文头部结构
网络·网络协议·tcp/ip
德迅云安全杨德俊4 小时前
应用加速:一站式解决企业跨域网络加速与安全双重难题
网络·安全·ddos
瓦学妹4 小时前
什么是网络索引?它是如何工作的?
大数据·网络·python·网络爬虫
for_ever_love__6 小时前
iOS:网络请求再学习
网络·学习·ios·objective-c
一名普通的电源工程师7 小时前
E0512XT-1WR3 适配优选 钡特电源 DF1-05D12XT|1W 隔离5V转±12V模块电源选型参数技术解析
大数据·网络·人工智能
fengci.7 小时前
Microweber CMS 未授权路径穿越漏洞(CVE-2026-65694)
android·开发语言·前端·学习·php
2301_780789668 小时前
零信任时代:WAF 从边界防护到微隔离的架构跃迁
网络·安全·web安全·kubernetes·ddos
regret~8 小时前
【记录】网络路由、转发与网卡隔离
linux·服务器·网络