下面叙述的是关于几个必须要知道的iOS网络编程入门级别的要点:
     
1、客户端如何找到连接的服务器
   客户端通过URL找到想要连接的服务器
 
2、什么是URL
    URL的全称是Uniform Resource Locator(统一资源定位符)
    通过1个URL,能找到互联网上唯一的1个资源
    URL就是资源的地址、位置,互联网上的每个资源都有一个唯一的URL
 
    URL的基本格式 = 协议://主机地址/路径 http://www.520it.com/img/logo.png
 
    协议:不同的协议,代表着不同的资源查找方式、资源传输方式
    主机地址:存放资源的主机(服务器)的IP地址(域名)
    路径:资源在主机(服务器)中的具体位置
 
3、URL中常见的协议
    HTTP
    超文本传输协议,访问的是远程的网络资源,格式是http://
    http协议是在网络开发中最常用的协议
 
    file
    访问的是本地计算机上的资源,格式是file://(不用加主机地址)
 
    mailto
    访问的是电子邮件地址,格式是mailto:
 
    FTP
    访问的是共享主机的文件资源,格式是ftp://
4、发送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请求跟服务器进行交互,得先了解一个概念
    参数
    就是传递给服务器的具体数据,比如登录时的帐号、密码
5、GET和POST对比
    GET和POST的主要区别表现在数据传递上
        GET
    在请求URL后面以?的形式跟上发给服务器的参数,多个参数之间用&隔开,比如
    http://ww.test.com/login?username=123&pwd=234&type=JSON
    由于浏览器和服务器对URL长度有限制,因此在URL后面附带的参数是有限制的,通常不能超过1KB
 
        POST
    发给服务器的参数全部放在请求体中
    理论上,POST传递的数据量没有限制(具体还得看服务器的处理能力)
 
6、GET和POST的选择
    选择GET和POST的建议
    如果要传递大量数据,比如文件上传,只能用POST请求
    GET的安全性比POST要差些,如果包含机密\敏感信息,建议用POST
    如果仅仅是索取数据(数据查询),建议使用GET
    如果是增加、修改、删除数据,建议使用POST
7、iOS中发送HTTP请求的方案
 
    在iOS中,常见的发送HTTP请求的方案有
    苹果原生(自带)
    NSURLConnection:用法简单,最古老最经典最直接的一种方案【坑比较多】
    NSURLSession:功能比NSURLConnection更加强大,苹果目前比较推荐使用这种技术【2013推出,iOS7开始出的技术】
    CFNetwork:NSURL*的底层,纯C语言
 
    第三方框架
    ASIHttpRequest:外号“HTTP终结者”,功能极其强大,可惜早已停止更新
    AFNetworking:简单易用,提供了基本够用的常用功能,维护和使用者多
    MKNetworkKit:简单易用,产自三哥的故乡印度,维护和使用者少
 
 建议
 为了提高开发效率,企业开发用的基本是第三方框架
 
8、HTTP通信过程 - 请求
    HTTP协议规定:1个完整的由客户端发给服务器的HTTP请求中包含以下内容
    请求头:包含了对客户端的环境描述、客户端请求信息等
    GET /minion.png HTTP/1.1   // 包含了请求方法、请求资源路径、HTTP协议版本
    Host: 120.25.226.186:32812     // 客户端想访问的服务器主机地址
    User-Agent: Mozilla/5.0  // 客户端的类型,客户端的软件环境
    Accept: text/html, */*     // 客户端所能接收的数据类型
    Accept-Language: zh-cn     // 客户端的语言环境
    Accept-Encoding: gzip     // 客户端支持的数据压缩格式
 
    请求体:客户端发给服务器的具体数据,比如文件数据(POST请求才会有)
 
9、HTTP通信过程 - 响应
    客户端向服务器发送请求,服务器应当做出响应,即返回数据给客户端
    HTTP协议规定:1个完整的HTTP响应中包含以下内容
    响应头:包含了对服务器的描述、对返回数据的描述
    HTTP/1.1 200 OK            // 包含了HTTP协议版本、状态码、状态英文名称
    Server: Apache-Coyote/1.1         // 服务器的类型
    Content-Type: image/jpeg         // 返回数据的类型
    Content-Length: 56811         // 返回数据的长度
    Date: Mon, 23 Jun 2014 12:54:52 GMT    // 响应的时间
 
    响应体:服务器返回给客户端的具体数据,比如文件数据
 
10、常见响应状态码
 
状态码
英文名称
中文描述
200
OK
请求成功
400
Bad Request
客户端请求的语法错误,服务器无法解析
404
Not Found
服务器无法根据客户端的请求找到资源
500
Internal Server Error
服务器内部错误,无法完成请求
 
11、接口文档参考
1、JSON的GET请求接口文档参考:     http://open.weibo.com/wiki/2/users/show?sudaref=www.baidu.com
2、JSON的POST请求接口文档参考:  http://open.weibo.com/wiki/OAuth2/access_token
 
要么直接看到Home页面看各种各样的接口文档:http://open.weibo.com/wiki/%E5%BE%AE%E5%8D%9AAPI
 
 
 
 

iOS开发网络篇—网络编程基础(二)的更多相关文章

  1. iOS开发UI篇—核心动画(基础动画)

    转自:http://www.cnblogs.com/wendingding/p/3801157.html 文顶顶 最怕你一生碌碌无为 还安慰自己平凡可贵 iOS开发UI篇—核心动画(基础动画) iOS ...

  2. iOS开发UI篇—Quartz2D简单使用(二)

    iOS开发UI篇—Quartz2D简单使用(二) 一.画文字 代码: // // YYtextview.m // 04-写文字 // // Created by 孔医己 on 14-6-10. // ...

  3. iOS开发网络篇—网络编程基础

    iOS开发网络篇—网络编程基础 一.为什么要学习网络编程 1.简单说明 在移动互联网时代,移动应用的特征有: (1)几乎所有应用都需要用到网络,比如QQ.微博.网易新闻.优酷.百度地图 (2)只有通过 ...

  4. iOS开发网络篇—网络请求(HTTP协议)小结

    iOS开发网络篇—网络请求(HTTP协议)小结 iOS开发网络篇—网络请求(HTTP协议)小结 1. 聊一下HTTP协议(协议的完整的通信过程) 2.通信过程 1> 请求 * 客户端 --> ...

  5. iOS开发UI篇—Button基础

    iOS开发UI篇—Button基础 一.简单说明 一般情况下,点击某个控件后,会做出相应反应的都是按钮 按钮的功能比较多,既能显示文字,又能显示图片,还能随时调整内部图片和文字的位置 二.按钮的三种状 ...

  6. iOS开发Swift篇—(二)变量和常量

    iOS开发Swift篇—(二)变量和常量 一.语言的性能 (1)根据WWDC的展示 在进行复杂对象排序时Objective-C的性能是Python的2.8倍,Swift的性能是Python的3.9倍 ...

  7. 《iOS开发指南:从零基础到App Store上架(第2版)》

    <iOS开发指南:从零基础到App Store上架(第2版)> 基本信息 作者: 关东升 丛书名: 图灵原创 出版社:人民邮电出版社 ISBN:9787115348029 上架时间:201 ...

  8. iOS 开发多线程篇—GCD的常见用法

    iOS开发多线程篇—GCD的常见用法 一.延迟执行 1.介绍 iOS常见的延时执行有2种方式 (1)调用NSObject的方法 [self performSelector:@selector(run) ...

  9. iOS开发多线程篇—GCD的基本使用

    iOS开发多线程篇—GCD的基本使用 一.主队列介绍 主队列:是和主线程相关联的队列,主队列是GCD自带的一种特殊的串行队列,放在主队列中得任务,都会放到主线程中执行. 提示:如果把任务放到主队列中进 ...

  10. iOS开发多线程篇—GCD的常见用法

    iOS开发多线程篇—GCD的常见用法 一.延迟执行 1.介绍 iOS常见的延时执行有2种方式 (1)调用NSObject的方法 [self performSelector:@selector(run) ...

随机推荐

  1. How to implement an algorithm from a scientific paper

    Author: Emmanuel Goossaert 翻译 This article is a short guide to implementing an algorithm from a scie ...

  2. bootstrap精简教程

    bootstrap 的学习非常简单,并且它所提供的样式又非常精美.只要稍微简单的学习就可以制作出漂亮的页面. bootstrap中文网:http://v3.bootcss.com/ bootstrap ...

  3. 分享27款最佳的复古风格 WordPress 主题

    WordPress 作为最流行的博客系统,插件众多,易于扩充功能.安装和使用都非常方便,而且有许多第三方开发的免费模板,安装方式简单易用. 复古风格可以应用于任何东西,从服装到室内设计,那么复古风格的 ...

  4. wcf服务返回json

    private static void CreateErrorReply(OperationContext operationContext, string key, HttpStatusCode s ...

  5. CSS--复习之旅(一)

    CSS概述 CSS 指层叠样式表 (Cascading Style Sheets) 样式定义如何显示 HTML 元素 样式通常存储在样式表中 把样式添加到 HTML 4.0 中,是为了解决内容与表现分 ...

  6. P6 EPPM Manual Installation Guide (Oracle Database)

    P6 EPPM Manual Installation Guide (Oracle Database) P6 EPPM Manual Installation Guide (Oracle Databa ...

  7. jquery实现表格中点击相应行变色功能

    对于一个表格,为了使我们选中的项更容易区分,需要为选中项添加高亮,同时也需要,将其他项的高亮形式去除.类似于: <!DOCTYPE html> <html lang="en ...

  8. 重新想象 Windows 8.1 Store Apps (77) - 控件增强: 文本类控件的增强, 部分控件增加了 Header 属性和 HeaderTemplate 属性, 部分控件增加了 PlaceholderText 属性

    [源码下载] 重新想象 Windows 8.1 Store Apps (77) - 控件增强: 文本类控件的增强, 部分控件增加了 Header 属性和 HeaderTemplate 属性, 部分控件 ...

  9. 通过代码的方式完成WCF服务的寄宿工作

    使用纯代码的方式进行服务寄宿 服务寄宿的目的是为了开启一个进程,为WCF服务提供一个运行的环境.通过为服务添加一个或者多个终结点,使之暴露给潜在的服务消费,服务消费者通过匹配的终结点对该服务进行调用, ...

  10. c语言笔试题

    填空: 1,short int a[10]={123, 456, 789}; sizeof(a)=(       ); short int *p=&a, 则sizeof(p)=(       ...