1.什么是URL

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

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

URL就是资源的地址、位置,互联网上的每个资源都有一个唯一的URL

URL的基本格式 = 协议://主机地址/路径   http://202.108.22.5/img/bdlogo.gif

协议:不同的协议,代表着不同的资源查找方式、资源传输方式.1>HTTP://   表示采用HTTP协议,

主机地址:存放资源的主机的IP地址(域名)2>202.208.225/  这是我的本地服务器地址,

路径:资源在主机中的具体位置3>img/bdlogo.gif  这是我要访问的数据在我服务器上的路径

2.URL中常见的协议:

    • HTTP
    • 超文本传输协议,访问的是远程的网络资源,格式是http://
    • http协议是在网络开发中最常用的协议
    • file
    • 访问的是本地计算机上的资源,格式是file://(不用加主机地址)
    • mailto
    • 访问的是电子邮件地址,格式是mailto:
    • FTP
    • 访问的是共享主机的文件资源,格式是ftp://
  • HTTP协议简介
    • HTTP协议的作用
    • HTTP的全称是Hypertext Transfer Protocol,超文本传输协议
    • 规定客户端和服务器之间的数据传输格式
    • 让客户端和服务器能有效地进行数据沟通
    • HTTP协议的特点(目前Xcode默认支持HTTPS协议)
    • 简单快速
    • 因为HTTP协议简单,所以HTTP服务器的程序规模小,因而通信速度很快
    • 灵活
    • HTTP允许传输任意类型的数据
    • HTTP 0.9和1.0使用非持续连接
    • 限制每次连接只处理一个请求,服务器对客户端的请求做出响应后,马上断开连接,这种方式可以节省传输时间
    • HTTP的基本通信过程:
    1. 要想使用HTTP协议向服务器索取数据,要了解HTTP的通信过程
    • 完整的http通信可以分为2大步骤
    • 请求:客户端向服务器索要数据
    • 响应:服务器返回客户端相应的数据
    1. iOS中发送HTTP请求的方案
    • 在iOS中,常见的发送HTTP请求的方案有
    • 苹果原生(自带)
    • NSURLConnection:用法简单,最古老最经典最直接的一种方案
    • NSURLSession:iOS 7新出的技术,功能比NSURLConnection更加强大
    • CFNetwork:NSURL*的底层,纯C语言
    • 第三方框架
    • ASIHttpRequest:外号“HTTP终结者”,功能极其强大,可惜早已停止更新
    • AFNetworking:简单易用,提供了基本够用的常用功能,维护和使用者多
    • MKNetworkKit:简单易用,产自三哥的故乡印度,维护和使用者少
    • 建议
    • 为了提高开发效率,企业开发用的基本是第三方框架
    1. 发送HTTP请求的方法:
    • 在HTTP/1.1协议中,定义了8种发送http请求的方法
    • GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT、PATCH
    • 根据HTTP协议的设计初衷,不同的方法对资源有不同的操作方式
    • PUT :增
    • DELETE :删
    • POST:改
    • GET:查
    • 最常用的是GET和POST(实际上GET和POST都能办到增删改查)
    • 要想使用GET和POST请求跟服务器进行交互,得先了解一个概念
    • 参数
    • 就是传递给服务器的具体数据,比如登录时的帐号、密码
    1. GET和POST的主要区别表现在数据传递上
    • GET
    • 在请求URL后面以?的形式跟上发给服务器的参数,多个参数之间用&隔开,比如

http://ww.test.com/login?username=123&pwd=234&type=JSON

    • 由于浏览器和服务器对URL长度有限制,因此在URL后面附带的参数是有限制的,通常不能超过1KB
    • POST
    • 发给服务器的参数全部放在请求体中
    • 理论上,POST传递的数据量没有限制(具体还得看服务器的处理能力)
    1. GET和POST的选择
    • 选择GET和POST的建议
    • 如果要传递大量数据,比如文件上传,只能用POST请求
    • GET的安全性比POST要差些,如果包含机密\敏感信息,建议用POST
    • 如果仅仅是索取数据(数据查询),建议使用GET
    • 如果是增加、修改、删除数据,建议使用POST
    1. HTTP协议规定:1个完整的由客户端发给服务器的HTTP请求中包含以下内容
    • 请求行:包含了请求方法、请求资源路径、HTTP协议版本

GET /LDServer/resources/images/1.jpg HTTP/1.1

                从请求行中得到的信息:1>发送的是GET请求,2>服务器名称:LDServer,

3>资源路径:resources/images/1.jpg  4>协议的版本:1.1

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

Host: 192.168.1.105:8080     // 客户端想访问的服务器主机地址

如果在百度上查找东西访问的是百度的服务器,在谷歌上访问的就是谷歌的服务器.

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9) Firefox/30.0

// 客户端的类型,客户端的软件环境

Macintosh; Intel Mac OS X 10.9:表示我是用的Mac电脑

                    Mozilla/5.0,Firefox/30.0:表示我是实用的是火狐浏览器

                    在QQ空间上看到说说的下面会有手机版本,就是通过这个实现的

Accept: text/html, */*     // 客户端所能接收的数据类型,txt和html格式的文件.*/*表示所有文件都能接收

Accept-Language: zh-cn     // 客户端的语言环境:中文

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

    • 请求体:客户端发给服务器的具体数据,比如文件数据
    1. HTTP通信过程 - 响应
    • 客户端向服务器发送请求,服务器应当做出响应,即返回数据给客户端
    • HTTP协议规定:1个完整的HTTP响应中包含以下内容
    • 状态行:包含了HTTP协议版本、状态码、状态英文名称 HTTP/1.1 200 OK(常见状态码见下图)
    • 响应头:包含了对服务器的描述、对返回数据的描述

        Server: Apache-Coyote/1.1         // 服务器的类型

        Content-Type: image/jpeg         // 返回数据的类型

        Content-Length: 56811         // 返回数据的长度

        Date: Mon, 23 Jun 2015 12:54:52 GMT    // 响应的时间

    • 实体内容:服务器返回给客户端的具体数据,比如文件数据

          •       (这个是我们需要的主体内容,即方法返回的Data数据,需要解析的数据)
    • GET方法POST方法总结:
    • HTTP通信过程"
    • NSURLResponse
    • 1.NSMutableURLRequest 是  NSURLRequest 的子类,只有NSMutableURLRequest 才能设置超时,超时是request的属性,与GET,POST无关

      Request.timeoutInterval = 5;

      2.路径中(生成URL之前的路径)不可以有中文,如果字符串路径中有中文需要进行转码,我们在地址栏中输入有中文的路径后是浏览器自动帮忙转码后再发送请求.

    • 发送JSON数据给服务器:
    • 多值参数:
 
 
 
好文要顶 关注我 

随机推荐

  1. Qt数据库_资料

    1. QT笔记_数据库总结(一)-rojian-ChinaUnix博客.html http://blog.chinaunix.net/uid-28194872-id-3631462.html (里面有 ...

  2. Beta 冲刺 第三天

    第三天 2018.6.26 今日完成任务情况. 妥志福.牛瑞鑫: 完成任务:让用户接触系统,指出系统中存在的问题,并统计修改的问题,提出修改的方案. 王胜海.马中林: 完成任务:对文档中存在的问题修改 ...

  3. java编程思想之并发(死锁)

    一个对象可以有 synchronized 方法或其他形式的加锁机制来防止别的任务在互斥还没有释放的时候就访问这个对象. 死锁 任务有可能变成阻塞状态,所以就可能发生这样的情况:某个任务在等待另一个任务 ...

  4. JDK1.5 新特性

    1:自动装箱与拆箱 自动装箱:每当需要一种类型的对象时,这种基本类型就自动地封装到与它相同类型的包装中. 自动拆箱:每当需要一个值时,被装箱对象中的值就被自动地提取出来,没必要再去调用intValue ...

  5. LeetCode--172--阶乘后的0

    问题描述: 给定一个整数 n,返回 n! 结果尾数中零的数量. 示例 1: 输入: 3 输出: 0 解释: 3! = 6, 尾数中没有零. 示例 2: 输入: 5 输出: 1 解释: 5! = 120 ...

  6. Confluence 6 设置公共访问

    你可以通过为匿名用户启用 'Use Confluence' 权限来启用匿名用户的站点访问(也称为公共访问) 一个匿名用户的定义为一个不需要登录就可以访问 Confluence 站点.使用 Conflu ...

  7. luogu P2408 不同子串个数

    考虑反向操作,去计算有多少组相同的子串,对于一组大小为k的极大相同子串的集合,ans-=k-1. 为了避免重复计算,需要一种有效的,有顺序的记录方案. 比如说,对于每一个相同组,按其起始点所在的位置排 ...

  8. Blog Post Rating CodeForces - 806E (线段树二分)

    题目链接 题目大意: 有一个博客, 初始分数为$0$, 有$n$个人, 第$i$个人有一个期望值$a_i$, 如果第$i$个人浏览博客时,博客赞数高于$a_i$博客分数$-1$, 低于$+1$, 相等 ...

  9. Enduring Exodus CodeForces - 655C (二分)

    链接 大意: n个房间, 1为占用, 0为未占用, John要将k头奶牛和自己分进k+1个空房间, 求John距最远的奶牛距离的最小值 这种简单题卡了20min.... 显然对于固定的k+1个房间, ...

  10. 『科学计算_理论』优化算法:梯度下降法&牛顿法

    梯度下降法 梯度下降法用来求解目标函数的极值.这个极值是给定模型给定数据之后在参数空间中搜索找到的.迭代过程为: 可以看出,梯度下降法更新参数的方式为目标函数在当前参数取值下的梯度值,前面再加上一个步 ...