请求方法(所有方法全为大写)有多种,各个方法的解释如下:
GET     请求获取Request-URI所标识的资源
POST    在Request-URI所标识的资源后附加新的数据
HEAD    请求获取由Request-URI所标识的资源的响应消息报头
PUT     请求服务器存储一个资源,并用Request-URI作为其标识
DELETE  请求服务器删除Request-URI所标识的资源
TRACE   请求服务器回送收到的请求信息,主要用于测试或诊断
CONNECT 保留将来使用
OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求


HTTP/1.1协议中一共定义了八种方法(有时也叫“动作”)来表明Request-URI指定的资源的不同操作方式,但是一般常用的就是GET和POST方式。

  这里简单说一下GET方式和POST方式的差别:

  1. GET是从服务器上获取数据,POST是向服务器传送数据。
  2. 在客户端,GET方式在通过URL提交数据,数据在URL中可以看到;POST方式,数据放在HTML HEADER内提交。
  3. 对于GET方式,服务器端用Request.QueryString获取变量的值,对于POST方式,服务器用Request.Form获取提交的数据。
  4. GET方式提交的数据不能大于2KB(主要是URL长度限制),而POST则没有此限制。
  5. 安全性问题。正如2中提到,使用GET的时候,参数会显示在地址栏上,而POST不会。所以,如果这些数据是中文数据而且是非敏感数据,那么使用GET;如果用户输入的数据不是中文字符而且包含敏感数据,那么还是使用POST为好。


  http请求由三部分组成,分别是:请求行、消息报头、请求正文


在接收和解释请求消息后,服务器返回一个HTTP响应消息。

HTTP响应也是由三个部分组成,分别是:状态行、消息报头、响应正文

1、状态行格式如下:
 HTTP-Version Status-Code Reason-Phrase CRLF
 其中,HTTP-Version表示服务器HTTP协议的版本;Status-Code表示服务器发回的响应状态代码;Reason-Phrase表示状态代码的文本描述。
 状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:
 1xx:指示信息--表示请求已接收,继续处理
 2xx:成功--表示请求已被成功接收、理解、接受
 3xx:重定向--要完成请求必须进行更进一步的操作
 4xx:客户端错误--请求有语法错误或请求无法实现
 5xx:服务器端错误--服务器未能实现合法的请求
 常见状态代码、状态描述、说明:
 200 OK      //客户端请求成功
 400 Bad Request  //客户端请求有语法错误,不能被服务器所理解
 401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报                 //头域一起使用 
 403 Forbidden  //服务器收到请求,但是拒绝提供服务
 404 Not Found  //请求资源不存在,eg:输入了错误的URL
 500 Internal Server Error //服务器发生不可预期的错误
 503 Server Unavailable  //服务器当前不能处理客户端的请求,一段时间后,                         //可能恢复正常
 eg:HTTP/1.1 200 OK (CRLF)

2、响应报头后述

3、响应正文就是服务器返回的资源的内容



知的流媒体协议有RTMP,RTSP,HLS


HLS,这个协议接触得最早,自己的个人理解,如果要开发一套准实时的手机音视频直播系统,需要支持iphone,android,windows phone等多款手机,这个协议真心不错。为什么是准实时呢,因为客户端播放的是最新切割的ts文件,它的延迟取决于切片的大小。

参考文章 ,其思路步骤:

1、采集视频源和音频源的数据

2、对原始数据进行H264编码和AAC编码

3、视频和音频数据封装为MPEG-TS包

4、HLS分段生成策略及m3u8索引文件

5、HTTP传输协议

        这里面的很多步骤需要用到ffmpeg编解码库,比如编码, 切片等。方便之处是可以使用普通的http服务器就ok了,推荐使用nginx,这是一款功能无比强大的web服务器,其反向代理,性能好的不可言喻。

         由于我大学非计算机专业出身,或者说与计算机专业一点都不靠边,我的计算机语言功底弱爆了。数据结构算法真心是我的软肋,C++语言就会简单的用MFC编写hello world ,HLS当初就这样被我放弃了。

        


        RTSP协议,这应该是实时性最好的了,如果要想实时性要求很高,比如0.5s以内,这个是不错的选择。前阵子模仿spydroid写了个建议的rtsp服务器,其实就是options,describe,setup,play,pause,teardown这几步了,这个协议用的最广泛,网上介绍也比较多。要想真正深入了解rtsp协议,c++语言功底好的可以查看live555 


android流媒体开发框架介绍

http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2013/0407/1134.html