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. C指针的一些知识

    原文:http://blog.csdn.net/soonfly/article/details/51131141 前言:复杂类型说明 要了解指针,多多少少会出现一些比较复杂的类型,所以我先介绍一下如何 ...

  2. java 使用正则判断是不是一个数字

    public class Numeric { public static void main(String[] args) { String string = "-1234.15" ...

  3. Android网络多线程断点续传下载

    本示例介绍在Android平台下通过HTTP协议实现断点续传下载. 我们编写的是Andorid的HTTP协议多线程断点下载应用程序.直接使用单线程下载HTTP文件对我们来说是一件非常简单的事.那么,多 ...

  4. POJ - 2528 Mayor's posters(dfs+分治)

    POJ - 2528 Mayor's posters 思路:分治思想. 代码: #include<iostream> #include<cstdio> #include< ...

  5. Jersey 2.x 前言和约定的文本格式

    这是Jersey 2.x 的用户指南.我们极力将它能与我们新增的功能保持一致.当阅读本指南,作为补充,也请移步至Jersey API documentation查看 Jersey 的特性和 API. ...

  6. [洛谷P1507]NASA的食物计划 以及 对背包问题的整理

    P1507 NASA的食物计划 题面 每个物品有三个属性,"所含卡路里":价值\(v\),"体积":限制1\(m_1\),以及"质量":限制 ...

  7. Fair CodeForces - 987D (bfs)

    链接 大意:给定无向图边权均为1, 每个节点有一种货物, 对于每个节点, 求出拿到$s$种不同货物的最短距离 (每种货物独立计算,并且不用返回) 因为$s$较小, 直接枚举每种货物即可 所以问题就转化 ...

  8. (转)使用UTL_SMTP包发送邮件

    使用UTL_SMTP包发送邮件 参考文档 Email From Oracle PL/SQL (UTL_SMTP) UTL_SMTP Oracle 存储过程中发送邮件,并支持用户验证.中文标题和内容

  9. HttpServletRequest解决中文乱码的问题

    HTTP请求有get和post,这两中方式解决中文乱码的方式如下: 1.Post方式请求 //这句话是设置post请求体的编码为utf-8 request.setCharacterEncoding(& ...

  10. Hibernate优化策略

    https://blog.csdn.net/blueheart20/article/details/21019043 https://blog.csdn.net/yerenyuan_pku/artic ...