HTTP协议的特点:
(1)HTTP协议是无状态的 就是说每次HTTP请求都是独立的,任何两个请求之间没有什么必然的联系。但是在实际应用当中并不是完全这样的,引入了Cookie和Session机制来关联请求。
(2)多次HTTP请求 在客户端请求网页时多数情况下并不是一次请求就能成功的,服务端首先是响应HTML页面,然后浏览器收到响应之后发现HTML页面还引用了其他的资源,例如,CSS,JS文件,图片等等,还会自动发送HTTP请求这些需要的资源。现在的HTTP版本支持管道机制,可以同时请求和响应多个请求,大大提高了效率。
(3)基于TCP协议 HTTP协议目的是规定客户端和服务端数据传输的格式和数据交互行为,并不负责数据传输的细节。底层是基于TCP实现的。现在使用的版本当中是默认持久连接的,也就是多次HTTP请求使用一个TCP连接。
HTTP请求方法
请求方法是客户端用来告知服务器其动作意图的方法。需要注意的是方法名区分大小写,需要用大写字母。
(1)GET:获取资源 向特定的资源发出请求。注意:GET方法不应当被用来产生“副作用”的操作中,例如在we app中的应用,其中一个原因是GET可能会被爬虫等随意访问。
(2)POST:传输实体主体 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立或对已有资源的修改。POST与GET的区别之一就是目的不同。GET的目的是获取,POST的目的是传输
(3)PUT:传输主体 PUT方法用来传输文件,向指定资源位置上传其最新内容。类似FTP协议,文件内容包含在请求报文的实体中,然后请求保存到URL指定的服务器位置。
(4)HEAD:获得报文首部 HEAD方法类似GET方法,但是不同的是HEAD方法不要求返回数据(响应体)。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。该方法常用于测试超链接的有效性,是否可以访问,以及最近是否更新等信息。
(5)DELETE:删除文件 DELETE方法用来删除文件,是与PUT相反的方法。DELETE要求服务器删除Request-URI所标识的资源。
(6)OPTIONS:询问支持的方法 因为并不是所有的服务器都支持规定的方法,为了安全有些服务器可能会禁止掉一些方法例如DELETE、PUT等。那么OPTIONS就是用来询问服务器支持的方法。
(7)TRACE:追踪路径 TRACE方法是让Web服务器将之前的请求通信环回给客户端的方法。这个方法并不常用。
(8)CONNECT:要求用隧道协议连接代理 CONNECT方法要求在与代理服务器通信时建立隧道,实现用隧道协议进行TCP通信。主要使用SSL/TLS协议对通信内容加密后传输。
Android URL通信
●HttpURLConnection是Java API的标准接口,包含在Java. net包中,继承自URLConnection类。
●URLConnection与Ht tpURLConnect ion都是抽象类,无法直接实例化,通过URL的openConnection方法获得对象
URL url = new URL( "https://www. baidu. com");
HttpURLConnection connection= (Ht tpURLConnection) url. openConnection( );
●HttpURLConnection获取输入、输出流的方法
●InputStream getInputStream( ):获得输入流,调用此方法后才真正发生连接
●OutputStream get0utputStream( ):获得输出流
HttpURLConnection
HttpURLConnection根据使用目的不同,在具体使用时会稍有区别。下面,就常见的几种应用举例说明。
●从Internet获取网页,即向URL发送请求,将网页以流的形式读回本地。
●从Internet获取文件,即利用HttpURLConnection对象从网络中获取文件数据。
●向Internet发送请求参数,即向服务器传递参数,即向服务器传递参数
●向Internet传送XML数据。(使用HTTP的的方式传输文件,一般文件大小在5M一下,HTTP通信方式不适合传输大文件,对大文件的 传输最好使用Socket通信方式,以保证程序的稳定性。)
HttpURLConnection访问HTTP资源的步骤:
①根据URL地址创建URL对象
②使用URL对象的openConnection( )方法获取HttpURLConnection对象
③设置连接的属性,包括GET/POST请求方式
④输入、输出数据
⑤关闭输入、输出流
⑥在AndroidMani fes t配置文件中设置访问INTERNET的权限
OkHttp
android网络框架之OKhttp一个处理网络请求的开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司贡献(该公司还贡献了Picasso)用于替代HttpUrlConnection。
在AndroidStudio中使用不需要下载jar包,直接添加依赖即可:
compile ‘com.squareup.okhttp3:okhttp:3.4.1’
首先介绍下OkHttp的简单使用,主要包含:
●同步/异步get请求
●同步/异步post请求
●基于Http的文件上传
●文件下载
●加载图片
●支持请求回调,直接返回对象、对象集合
●支持session的保持