网络笔记01-1

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"];

时间: 2024-10-22 19:42:44

网络笔记01-1的相关文章

【opengl 学习笔记01】HelloWorld示例

<<OpenGL Programming Guide>>这本书是看了忘,忘了又看,赶脚还是把笔记做一做心里比较踏实,哈哈. 我的主题是,好记性不如烂笔头. ================================================================ 1. 下载glut库 glut库地址为:www.opengl.org/resources/libraries/glut/glutdlls37beta.zip glut全称为:OpenGL Utilit

《30天自制操作系统》笔记(01)——hello bitzhuwei’s OS!

<30天自制操作系统>笔记(01)--hello bitzhuwei's OS! 最初的OS代码 1 ; hello-os 2 ; TAB=4 3 4 ORG 0x7c00 ; 指明程序的装载地址 5 6 ; 以下这段是标准FAT32格式软盘专用的代码 7 8 JMP entry 9 DB 0x90 10 DB "HELLOIPL" ; freeparam 启动区的名称可以是任意的字符串(8字节) 11 DW 512 ; 每个扇区(sector)的大小(必须为512字节)

HTTP 学习笔记01

HTTP   hypertext transfer protocol (超文本传输协议) TCP/IP 协议集中的一个应用层协议 用于定义WEB浏览器与WEB服务器之间交换数据的过程以及数据本身的格式 HTTP 1.0  会话方式 HTTP 1.1 方式 HTTP 请求消息结构 一个请求行,若干消息头,以及实体内容 其中的一些消息头和实体内容都是可选的,消息头和实体内容之间要用空行隔开. GET   方式下是没有实体内容的 POST .PUT.DELETE 方式下请求消息才可以包含实体内容 HT

SWIFT学习笔记01

1.Swift,用来判断option是不是nil,相当于OC的 if(option) if let name = option{ greeting = "if=====" }else{ greeting = "else===" } 2.运行switch中匹配到的子句之后,程序会退出switch语句,并不会继续向下运行,所以不需要在每个子句结尾写break. 3.//使用..创建的范围不包含上界,如果想包含的话需要使用...,集合上,就是[)与[]的关系 for i

C++ GUI Qt4学习笔记01

C++ GUI Qt4学习笔记01 qtc++signalmakefile文档平台 这一章介绍了如何把基本的C++只是与Qt所提供的功能组合起来创建一些简单的图形用户界面应用程序. 引入两个重要概念:一个是“信号和槽”,另一个是“布局”. 窗口部件(widget)是用户界面的一个可视化元素,相当于windows系统中的“控件”和“容器”.任意窗口部件都可以用作窗口. 1.1Hello Qt 正确安装Qt4开发环境,创建工程目录hello,源代码文件名为hello.cpp,进入hello目录 (1

单机笔记更改为网络笔记

myBase 是一款用于分类管理自由格式资料的小型个人数据库软件, 有助于个人用户在( Linux/MacOSX/Windows )桌面电脑系统上实施文档.笔记.日记.图片和网页等知识内容的分类管理. 借助软件提供的各项功能,创建和维护一个专属于自己的个人知识库将变的非常容易. 与传统意义上的数据库软件不同,myBase 通过内置的富文本编辑器接受图文信息的输入,并按树形 列表分类保存,同时接受任意磁盘文件作为树形列表条目的附件. myBase 提供了更好的方式使知识/信息的捕获.编辑.组织.查

【VB6笔记-01】 读取Excel绑定到DataGrid

Private Sub cmdOpen_Click() CommonDialog1.Filter = "Excel???t(*.xlsx)|*.xlsx" CommonDialog1.DialogTitle = "????" CommonDialog1.ShowOpen Me.txtFilePath.Text = CommonDialog1.FileName Dim DBconn As ADODB.Connection Dim strSQL As String Di

HTML学习笔记01

HTML学习笔记 HTML学习笔记01 一.HTML的定义 1 HTML就是"HyperText Markup Language","超文本标记语言".2 HTML不是<color="red">编程语言,而是一种标记语言.3 标记语言是一套标记标签.4 HTML使用标记标签来描述网页. 二.HTML标签 1 HTML标签是由尖括号包围的关键词.2 HTML标签通常是成对出现的.3 标签对中的第一个标签是开始标签,第二个标签是结束标签.

ijkplayer阅读笔记01

ijkplayer阅读笔记01 1.这章解决ijkplayer播放库初始化部分,直接贴上流程伪代码如下: IjkMediaPlayer_native_setup { ijkmp_android_create(message_loop){ mp->ffplayer->vout = SDL_VoutAndroid_CreateForAndroidSurface();{ SDL_VoutAndroid_CreateForANativeWindow();{ vout->create_overla

Log4j笔记----01

新建普通java project 项目创建文件如上 log4j.properties中编辑属性 ### 设置### log4j.rootLogger = debug,stdout,D,E ### 输出信息到控制台 ### log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target = System.out log4j.appender.stdout.layout = org.apach