1,git地址:https://github.com/square/okhttp
2,官网地址: https://square.github.io/okhttp/
Http作为现代应用程序的常用联网方式,用于交互数据和媒体信息。高效的执行HTTP能让你的程序更快的加载数据并节省带宽。
OkHttp作为默认的高效Http客户端,有以下优势:
在WWW中,每一个信息资源都有统一的且在网上唯一的地址,该地址就是URL。
uniform resouce locator(统一资源定位器),由4部分组成:协议、主机、端口、路劲,语法格式为:
protocol://hostname[:port] / path / [;parameters][?query]#fragment
protocol(协议)
指定使用的传输协议,比如http://,https://,ftp://,等;
在该类中使用Scheme表示,值只支持http和https
hostname(主机名)
指存放资源的服务器域名系统主机名或IP地址,有时主机名前也可以包含连接到服务器所需要的用户名和密码(格式:username:password@hostname)
在该类中可用比如 squre.com 、localhost,IPv4地址:192.168.0.1,IPv6地址:::1表示
通常一个web服务器可以用多个标识符访问,每个web服务器的名称都是一个不同的URL,它们不能互换。比如http://square.github.io/dagger和http://google.github.io/dagger 分配的是同样的ip地址,但是这两个url标识不同的资源。
port(端口号)
整数,可选,省略时使用方案的默认端口,各种传输协议都有默认的端口号,如http默认端口号80,https默认端口号443
path(路径)
由零或多个“/”符号隔开的字符串,一般用来表示主机上的一个目录或文件地址
parameters(参数)
这是用于指定特殊参数的可选项
query(查询)
可选,可有多个参数,用“&”符号隔开,每个参数和值用“=”符号隔开
1,相关的参数需要进行编码处理
fragment(信息片断)
字符串,用于指定网络资源中的片断。例如一个网页中有多个名词解释,可使用fragment直接定位到某一名词解释
HttpUrl则围绕URL的相关内容进行拆分和组合处理,同时对传递的相关内容进行编码处理.
HttpUrl url = new HttpUrl.Builder()
.scheme("https")
.host("www.google.com")
.addPathSegment("search")
.addQueryParameter("q", "polar bears")
.build();
可以得到如下完整的请求地址:
System.out.println(url);
//则将会打印出:
https://www.google.com/search?q=polar%20bears
HttpUrl url = HttpUrl.parse("https://twitter.com/search?q=cute%20%23puppies&f=images");
for (int i = 0, size = url.querySize(); i < size; i++) {
System.out.println(url.queryParameterName(i) + ": " + url.queryParameterValue(i));
}
将会输出以下信息:
q: cute #puppies
f: images
HttpUrl base = HttpUrl.parse("https://www.youtube.com/user/WatchTheDaily/videos");
HttpUrl link = base.resolve("../../watch?v=cbP2N1BQdYc");
System.out.println(link);
将会输出以下信息:
https://www.youtube.com/watch?v=cbP2N1BQdYc
相关的具体实现,可看参考HttpUrl源码