androidhttp编码
Ⅰ Android HTTP Post请求错误400
你确定你的post方法调用的url没问题吗?参数的名称和个数也没问题吗?
Ⅱ android中怎么创建一个表格
效果图:
5、 单击该项目,执行。便得到以上效果!
Ⅲ Android性能优化之网络优化DNS和HttpDNS知识详解
前言小计
本文已在在公众号【Android开发编程】发表
一、什么是DNS
二、DNS域名结构
1、DNS域名命名
2、域名的分级
域名可以划分为各个子域,子域还可以继续划分为子域的子域,这样就形成了顶级域名、二级域名、三级域名等
顶级域名可以分为三大类:
国家顶级域名:cn、us、uk等
通用域名:常见的有7个,com、net、org、e、int、gov、mil
方向域名: arpa,用于将ip地址转为域名
域名服务器
域名服务器按照由高到低进行层次划分:
注意: 一个域名服务器所负责的范围,称为区
三、域名解析过程
域名解析的重要两点:
以上两点是域名解析的重要两步。但是这并不是解析ip地址的完整过程,如果浏览器的缓存中有该域名对应的ip地址,就不需要向本地域名服务器请求了等等。下面来看详细过程:
例如要解析:www.example.com该域名的ip地址;
四、DNS安全和优化
1、dns安全问题
2、DNS优化
DNS解析是一个漫长的过程,那么它的优化有哪些?
1、网页端
用户在请求请求某个链接之前,浏览器先尝试解析该链接的域名再将其进行缓存。
可以这样做:
(1) 在服务器中响应设置X-DNS-Prefetch-Control的值为on启动预解析
(2) 在HTML中,
(3) 在head中加入link标签:
如
不过现在的Chrome浏览器会自动将当前页面的所有带href的dns都prefetch一遍。需要手动添加上面的link标签的场景是:你后面访问的域名不在当前页面的所有链接中;
正确使用link标签的姿势:
域名收敛:建议将静态资源只放在一个域名下面,可以减少DNS的请求
2、客户端
HttpDNS
HttpDNS是使用HTTP协议向阿里云的HTTPDNS服务器的80端口直接进行请求,代替传统的DNS协议向LDNS服务器的53端口进行请求。从而可以绕过LDNS,可以避免运行商的域名劫持和调度不精准的问题;
五、HttpDNS介绍
总结:
网络优化的知识点很多,今天主要介绍了dns的知识点
下次继续介绍Android网络优化的具体实现方案
Ⅳ Android面试笔记——HTTP/HTTPS
HTTP和HTTPS是面试常问的问题,内容比较多而且复杂,HTTPS里面的细节很多,本文只是把主要的东西写出来,想要弄懂HTTPS还是要多看几篇博文,自己动手走一遍把各个攻击的case搞明白。
HTTP 是超⽂本传输协议,也就是HyperText Transfer Protocol。
Host 字段 :客户端发送请求时,⽤来指定服务器的域名。 Host: www..com
Content-Length 字段 :服务器在返回数据时,会有 Content-Length 字段,表明本次回应的数据长度。 Content-Length: 1000
Connection 字段 :Connection 字段最常用于客户端要求服务器使⽤ TCP 持久连接,以便其他请求复⽤。 HTTP/1.1 版本的默认连接都是持久连接,但为了兼容⽼版本的 HTTP,需要指定 Connection ⾸部字段的值为Keep-Alive 。
Content-Type 字段 :Content-Type 字段⽤于服务器回应时,告诉客户端,本次数据是什么格式 。 Content-Type: text/html; charset=utf-8
Content-Encoding 字段 :Content-Encoding 字段说明数据的压缩⽅法。表示服务器返回的数据使用了什么压缩格式 。客户端在请求时,⽤ Accept-Encoding 字段说明自己可以接受哪些压缩⽅法。 Accept-Encoding: gzip, deflate
下图为访问网络的返回字段
HTTP/2 协议是基于 HTTPS 的,所以 HTTP/2 的安全性也是有保障的。
这都是基于 TCP 传输层的问题,所以 HTTP/3 把 HTTP 下层的 TCP 协议改成了 UDP 。
UDP 发生是不管顺序,也不管丢包的,所以不会出现 HTTP/1.1 的队头阻塞 和 HTTP/2 的⼀个丢包全部重传问题。
UDP 是不可靠传输的,但基于 UDP 的 QUIC 协议 可以实现类似 TCP 的可靠性传输。
HTTPS 采⽤的是 对称加密和⾮对称加密结合 的“混合加密”⽅式:
采⽤“混合加密”的⽅式的原因:
摘要算法⽤来实现 完整性 ,能够为数据⽣成独⼀⽆⼆的“指纹”,⽤于校验数据的完整性,解决了篡改的⻛险。
客户端在发送明⽂之前会通过摘要算法算出明文的“指纹”,发送的时候把“指纹 + 明文”⼀同加密成密文后,发送给服务器,服务器解密后,用相同的摘要算法算出发送过来的明文,通过⽐较客户端携带的“指纹”和当前算出的“指纹”做⽐较,若“指纹”相同,说明数据是完整的。
客户端先向服务器端索要公钥,然后⽤公钥加密信息,服务器收到密文后,⽤⾃⼰的私钥解密。这就存在些问题,如何保证公钥不被篡改和信任度?
所以这⾥就需要借助第三⽅权威机构 CA (数字证书认证机构),将服务器公钥放在数字证书(由数字证书认证机构颁发)中,只要证书是可信的,公钥就是可信的。
通过数字证书的⽅式保证服务器公钥的身份,解决冒充的⻛险 。
证书签名和验证过程 :
两种情况 :
Ⅳ android9.0以上http请求失败的解决方法
在android9.0以上由于安全性高了,所有不做处理http不能使用,有3中解决方法
1.最简单的方法降级targetSdkVersion的版本
将 targetSdkVersion 将到27或27以下
2.服务器请求http改为https (推荐)
推荐使用这个方法,毕竟https的安全行高
3.兼容http请求
(1):在清单文件中设置networkSecurityConfig属性
(2)在res/xml文件夹下创建network_security_config.xml