Android与服务器通信通常采用的是HTTP通信方式和Socket通信方式,本章主要介绍HTTP协议。HTTP通信方式又有GET和POST两种方式。
一、HTTP协议简介:
1、是一种超文本协议,是一套计算机在网络中通信的一种规则。在TCP/IP体系结构中,属于应用层协议。
2、是一种无状态的协议,即服务器与客户端之间不需要建立持久的链接。整个过程就是当一个客户端向服务器发送一个请求(request),然后服务器返回一个响应(response),之后连接就关闭了。
3、遵循请求/响应模式(2次握手)。不仅在请求时候需要先建立连接,而且在客户端向服务器发出请求后,服务器才能回复数据。(Socket连接在双方建立连接后可以直接进行数据的传输)
二、HTTP协议请求方法:
请求行中包括了请求方法,解释如下:
GET 请求获取Request-URI 所标识的资源;
POST 在Request-URI 所标识的资源后附加新的数据;
HEAD 请求获取由Request-URI 所标识的资源的响应消息报头
PUT 请求服务器存储一个资源,并用Request-URI 作为其标识
DELETE 请求服务器删除Request-URI 所标识的资源;
TRACE 请求服务器回送收到的请求信息,主要用于测试或诊断
CONNECT 保留将来使用
OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求
三、GET与POST的请求区别
1、功能上
GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。
2、数据可见性
Get是把参数数据队列加到提交的URL中,值和表内各个字段一一对应。
Post请求向服务器传送数据,是将数据放在HTML_HEADER内一起传送到服务器URL地址,数据对用户不可见。
3、数据的安全性
GET 请求一般不应产生副作用。就是说,它仅仅是获取资源信息,就像数据库查询一样,不会修改,增加数据,不会影响资源的状态。
Post可能会改变服务器上的资源的请求。
4、传送的数据量
GET方式提交的数据最多只能有1024字节。是因为GET是通过URL提交数据的,那么GET可提交的数据量就跟URL的长度有直接和关系。
POST方式提交的数据是没有大小限制的。起限制的是服务器的处理程序的处理能力。
二、HTTP定义的事务处理步骤:
1、建立连接
2、客户端发送HTTP请求头
3、服务器响应生成结果返回
4、服务器关闭连接,客户端解析数据
1、生成一个请求对象
HttpGet httpGet = new HttpGet("http://www.nowamagic.net/academy/android/");
2、生成一个httpclient客户端对象
HttpClient client = new DefaultHttpClient();
3、使用http客户端发送请求,HttpResponse是服务器返回的响应
HttpResponse httpResponse = client.execute(get);
4、利用getEntity去得到从服务器获取到的数据
//HttpEntity实体即可以是流也可以是字符串形式。
HttpEntity entity = httpResponse .getEntity();
InputStream inputstream = entity .getcontent();
//然后进行流操作将数据读出来
while ((len = inputstream.read(buffer)) !=-1) {
out.write(buffer,0, len);
}
//用完记得关流
inputstream。close();
//post方法与get方法类似
// 1、将参数放入list中
List params = new LinkedList();
params.add(new BasicNameValuePair("ie", "utf-8"));
params.add(new BasicNameValuePair("kw", "南京工程学院"));
// 2、对参数进行编码post
String param = URLEncodedUtils.format(params, "UTF-8");
// 3、将baseurl与parmas进行拼接 post
String url = "http://tieba.baidu.com/f" + "?" + param;
//请求等部分与GET操作一致