结合彩信的发送过程介绍HTTP

1、http在整个TCP/IP的位置:


2、  http的主要特点

        1)  http协议是基于TCP/IP的无连接,在传输层使用的是TCP协议,所以在每次数据请求时都需要进行三次握手连接,再传输数据。数据传输完毕了后需要进行四次握手断开连接。这样才完成一次完整的数据请求过程。

        2)  由于采用的是C/S模型,所以在请求数据时只需要传送请求方法和路径,请求方法通常有GET, HEAD和POST。

       3)  客户端每次向服务器请求时都建立一个连接,服务器处理完客户的请求就会立即断开连接。

        4)  是一种无状态协议。这里的无状态是指对于事物的处理没有记忆能力,即如果后续需要请求同样的数据也只能重传。

3、  两种请求方法

       GET方式:是以实体的方式得到由请求URI所指定资源的信息,如果请求URI只是一个数据产生过程,那么最终要在响应实体中返回的是处理过程的结果所指向的资源,而不是处理过程的描述。

      POST方式:用来向目的服务器发出请求,要求它接受被附在请求后的实体,并把它当作请求队列中请求URI所指定资源的附加新子项

      GET与POST方法有以下区别:

      1)   在客户端,Get方式在通过URL提交数据,数据在URL中可以看到;POST方式,数据放置在HTMLHEADER内提交。

      2)   GET方式提交的数据最多只能有1024字节,而POST则没有此限制。

      3)   安全性问题。正如在(1)中提到,使用 Get 的时候,参数会显示在地址栏上,而 Post 不会。所以,如果这些数据是中文数据而且是非敏感数据,那么使用 get;如果用户输入的数据不是中文字符而且包含敏感数据,那么还是使用 post为好。

      4)   安全的和幂等的。所谓安全的意味着该操作用于获取信息而非修改信息。幂等的意味着对同一 URL 的多个请求应该返回同样的结果。

4、  http的响应码

      1xx:信息,请求收到,继续处理

      2xx:成功,行为被成功地接受、理解和采纳

      3xx:重定向,为了完成请求,必须进一步执行的动作

       4xx:客户端错误:
5、在mms的发送过程中获取http连接的过程:

       首先访问网络服务需要网络权限:<uses-permission android:name=”android.permission.INTERNET”/>

      在sendTransaction的run函数中启动发送过程:

Public class sendTransaction extends Transaction implements Runnable{
Private AndroidHttpClient httpClient;
Private httpRequestBase post;
Public run(){
   httpClient = HttpUtils.createHttpClient(mContext); //获取httpClient对象,最后是通过new AndroidHttpClient()
   post = new HttpPost(…); // 创建http 的post请求
   response = sendPdu( … );
}
Public byte[] sendPdu(){
   …
Return HttpUtils.httpConnection(…,client, post);  //调用httpUtils的httpConnection继续发送彩信
}
}
HttpUtils类:

Public class HttpUtils{
   Protected static AndroidHttpClient createHttpClient(){
      AndroidHttpClient client = AndroidHttpClient.newInstance(userAgent,context);
      //这里最终在androidHttpClient 中直接返回一个 new AndroidHttpClient() 对象
      HttpParams params = client.getParams();
      …
      Return client;
}
Protected static byte[] httpConnection(){
   …
   switch(method){
    case HTTP_POST_METHOD:  //post方式
        post = new HttpPost(url);
        req = post;
    case HTTP_GET_METHOD: // get方式
        req = new HttpGet(url);
}
HttpResponse response = client.execute();  //http最后执行返回结果状态
}
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值