码迷,mamicode.com
首页 > 其他好文 > 详细

网络笔记01-1

时间:2015-09-18 00:38:23      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:

HTTP:

  URL:

    全称是Uniform Resource Locator( 统一资源定位符)

    通过1个URL,能找到互联网唯一的一个资源

    每一个资源都有一个唯一的URL

  URL格式:  

    基本格式:协议头://主机地址/路径

      协议头:不同的协议,表示不同的资源查找及传输方式。例如http,afp等

      主机地址:存放资源主机的IP地址(域名)

      路径:在主机地址每个资源的具体位置

  HTTP协议:

    http的全称是Hypertext Transfer Protocol,超文本传输协议

    规定客户端和服务器之间的数据传输的格式

    让客户端和服务器能够进行数据沟通

    HTTP协议是网络编程中最为广泛的协议

  HTTP协议的特点

    1、快速简单:因为HTTP协议简单,所以HTTP服务器的程序规模小,通讯速度快

    2、灵活:HTTP允许传输任意类型的数据

    3、HTTP 0.9和1.0使用的是非持续连接:限制每次连接只处理一个请求,服务器对客户端的请求做响应过后立刻断开连接,这种方式可以节省传输时间

    4、HTTP 1.1使用的是持续连接: 不必为每个web对象创建一个新的连接,同时一个连接可以传送多个对象

  HTTP通信过程

  请求

    HTTP协议规定:一个完成的有客户端发给服务器的HTTP奇怪呢求,要包含以下内容

      请求行:指定请求方法、请求资源路径以及HTTP协议版本   #表示访问根目录# GET / HTTP/1.1

      请求头:对客户端的环境描述、客户端请求的主机地址等信息

        请求头中至少包含:#客户端要访问的服务器主机的地址#  Host:m.baidu.com

        请求头中还可以包含以下信息:

        #客户端的类型,客户端的软件环境# User-Agent:iPhone AppleWebKit

        #客户端能接受的数据类型# Accept : text/html

        #客户端的语言环境#Accept-Language:zh-cn

        #客户端支持的数据压缩格式# Accept-Encoding:gzip

        #访问结束后,是否断开连接# Connection:Close

    请求体(可选):客户端发给服务器的具体数据,例如要上传的文件数据

      格式:每一项请求信息末尾使用\r\n,最后一个请求后再加\r\n (就是说最后一个请求信息后面为\r\n\r\n);

  响应

    HTTP协议规定:一个完整的HTTP响应应该包含以下内容

      状态行:包含了HTTP协议版本、状态码、状态英文名称

        #请求成功  HTTP/1.1 200 OK   状态码为200开头的都是成功的

      响应头:包含了对服务器的描述、对返回数据的描述

        #服务器类型  Server...

        #返回数据的类型 Contect-Type:

        #返回数据的长度 Contect-Length:

        #反应时间 Date...

        #ETag(哈希值): ETa.g:"xxxxxxx";         

      实体内容:服务器返回给客户端的具体的二进制数据

    *状态行和响应头是给开发人员调试的,实体内容是给用户看的

 

开发方案

  苹果官方提供三种方案

    1、NSURLConnection :iOS2.0推出、用法简单、最古老最直接的一种方案

    2、NSURLSecssion:iOS7推出,功能比NSURLConnection更加强大

    3、CFNetwork:NSURL的底层、纯C语言、几乎不用

  第三方框架

    ASIHttpRequest:底层为CFNetwork   外号为HTTP终结者,功能极其强大,2012年停止更新,基于MRC

    AFNetworking:底层为NSURLConnection&NSURLSecssion 简单易用,能够实现基本功能,维护和使用人多

    MKNetworkKit: 底层为NSURLConnection 简单易用,维护和使用人少

    Alamofire :底层为NSURLSession 基于Swift 轻量级开发,功能远不如AFNetworking

 NSURLConnection  

  步骤

    1、NSURL:确定要访问的资源

    2、NSURLRequest:根据URL简历请求,向服务器索要数据

    3、NSURLConnertion:建立网络连接,讲请求(异步)发送给服务器

    eg:

     //1.创建想要访问的资源   

         NSURL *url=[NSURL URLWithString:@"http://m.baidu.com"];

        //2.向服务器请求数据

         NSURLRequest *request=[NSURLRequest requestWithURL:url];

        //3.建立网络连接

        [NSURLConnection  sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response,NSData *data, NSError *connectionError) {

            NSLog(@"%@",data);

        }];

  NSURLConnection总结:

  sendAsynchronousRequest:这个方法是异步窒息功能的,程序员不需要考虑是否开线程或者创造队列,会将之前建好的请求异步发送给服务器。等到接受到服务器响应后,由queue负责调度comloetionHandler

  队列

     调度completionHandler执行的队列

      [[NSOperationQueue alloc]init],后台线程异步执行

      [NSOperationQueue mainQueue], 主线程异步执行

     队列的选择:

      如果要对数据进行耗时处理,例如:解压压缩等,选择新建队列调度

      如果只是要简单处理,立即更新UI,选择主队列

  completionHandler 

    网络访问已经结束,接受到服务器响应数据后的回调方法

    response,服务器的响应,通常在开发下载功能时才会调用

  响应属性介绍:

    URL 服务器反馈的URL,有的时候,服务器会重新定向新的URL

    MIMEType 服务器告诉客户端,返回二进制数据类型,ContentType 根据MIMEType客户端就知道使用什么软件处理返回的什么样的数据。

    statusCode 状态码:1XX 消息 2XX成功 3XX更多选择 4XX客户端错误 5XX服务器错误

    expectedContentLength 数据长度,下载文件总长度

    suggestedFilename 建议的文件名

   data 服务器返回的二进制数据,程序员最关心的内容

   connectionError 连接错误,任何网络访问都有可能出现错误

  请求简介

    基于URL建立请求

    设置请求属性:缓存策略,网络超时市场

    告诉服务器额外的信息:客户端类型,身份验证等...   

      [request setValue:@"iPhone AppleWebKit" forKey:@"User-Agent"];

网络笔记01-1

标签:

原文地址:http://www.cnblogs.com/sharui/p/4817532.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!