HTTP协议的概念
HTTP协议,Hyper Text Transfer Protocol (超文本传输协议)是用于从万维网服务器传送超文本到本地浏览器的传输协议,HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。

C/S模式
Client(客户端)和Server(服务器)常常分别处在相距很远的两台计算机上,Client程序的任务是将用户的要求提交给Server程序,再将Server程序返回的结果以特定的形式显示给用户;Server程序的任务是接受客户程序提出的服务请求,进行相应的处理,再将结果返回给客户程序。

iOS实现网络编程 
HTTP协议请求如何实现
网络请求地址对象NSURL的作用及用法
网络请求对象NSURLRequest、NSMutableURLRequest的作用和用法
网络链接对象NSURLConnenction的作用及用法
网路链接协议NSURLConnectionDataDelegate的作用及用法
网络请求数据信息NSURLResponse的作用及用法

网络连接中所用到的类
在后面的学习过程中遇到五个关于网络连接的类分别是:NSURL, NSURLRequest, NSMutableURLRequest, NSURLResponse, NSError.
NSURL:这个类封装了一个网络路径。
NSURLRequest:我们将通过这个类设置一些网络的请求信息。
NSMutableURLRequest:这个类是NSURLRequest的子类,可以设置一些请求参数
NSURLResponse:这个类可以接受一些从服务器返回的信息
NSError:这个类包含了我们在网络请求中遇到的错误信息

NSURL
url,统一资源定位符,也称为网址,因特网上标准的资源网址
一个典型的url:http://lily:123456@www.baidu.com/search?hl=en&source=hp&q=mysql&aq=f&oq=&aqi=g10#page
url的符语法: 协议://授权/路径?查询              注释:url中网址后面的路径服务器中的文件夹 ?后面跟的是参数,多个参数时通过&(and)链接 
协议:ftp://(文本传输协议) http://(超文本传输协议)
https://(安全超文本传输协议) file://(本地文件协议)

URL的请求方式

网络请求方式有两种:GET 和 POST
两种方式的相同点是:
都能给服务器传输数据
两种请求方式的不同点是:
1、给服务器传输数据的方式:
  GCT:通过网址字符串
  POST:通过data
2、传输数据的大小:
  GET:网址字符串最多255字节
  POST:使用NSData,容量超过1G
3、安全性:
  GET:所有传输给服务器的数据,显示在网址里,类似于密码的明文输入,直接可见
  POST:数据被转成NSData(二进制数据),类似于密码的密文输入,无法直接读取

连接方式
同步连接:程序容易出现卡死现象
异步链接:等待数据返回
异步链接有两种实现方式:
  设置代理,接受数据
  实现block

同步连接
同步连接请求可以让你能够从因特网请求数据,一旦发送同步请求后,程序将停止用户交互,直至服务器返回数据完成才可进行下一步操作。

[img]https://images0.cnblogs.com/blog2015/741774/201505/122020151731174.png[/img]
首先我们建立一个TableViewController视图控制器在方法viewDidLoad里面我们将将网址字符串转成NSURL对象,然后根据NSURL对象创建NSURLRequest请求对象,然后建立同步链接,再通过jeson解析信息
[img]https://images0.cnblogs.com/blog2015/741774/201505/122209309079427.png[/img]

异步连接
 同步连接会让程序出现“卡死”现象,导致用户交互不友好,而异步链接正好改变了这一弊端,异步连接不会阻塞主线程,而会建立一个新的线程来操作,因此用户在发送出异步请求后依然可以对UI进行操作,程序可以继续进行。

异步连接(代理)
设置NSURLConnection代理
实现相应的代理方法:开始响应接受数据、接收数据 、成功、失败

创建了URL,指定代理之后,代理中的相应方法实现如下:

异步连接(block)

本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-05/117494.htm

iOS 网络编程(HTTP协议)的更多相关文章

  1. iOS网络编程解析协议三:JSON数据传输解析

    作为一种轻量级的数据交换格式,正在逐步取代XML,成为网络数据的通用格式 基于JavaScript的一个子集 易读性略差,编码手写难度大,数据量小 JSON格式取代了XML给网络传输带来了很大的便利, ...

  2. iOS网络编程解析协议二:XML数据传输解析

    XML两种解析方式,一种是SAX,NSXMLParser是SAX方法解析,另一种是DOM(Document Object Model); 区别: SAX: 只能读,不能修改,只能顺序访问,适合解析大型 ...

  3. iOS网络编程模型

    iOS网络编程层次结构也分为三层: Cocoa层:NSURL,Bonjour,Game Kit,WebKit Core Foundation层:基于 C 的 CFNetwork 和 CFNetServ ...

  4. iOS网络编程笔记——Socket编程

    一.什么是Socket通信: Socket是网络上的两个程序,通过一个双向的通信连接,实现数据的交换.这个双向连路的一端称为socket.socket通常用来实现客户方和服务方的连接.socket是T ...

  5. IOS网络编程——第三方类库

    IOS网络编程——第三方类库 目录 概述 ASIHttpRequest AFNetworking 其他 概述 ASIHttpRequest AFNetworking 其他

  6. IOS网络编程:HTTP

    IOS网络编程:HTTP HTTP定义了一种在服务器和客户端之间传递数据的途径. URL定义了一种唯一标示资源在网络中位置的途径. REQUESTS 和 RESPONSES: 客户端先建立一个TCP连 ...

  7. 网络编程TCP协议-聊天室

    网络编程TCP协议-聊天室(客户端与服务端的交互); <span style="font-size:18px;">1.客户端发数据到服务端.</span> ...

  8. 网络编程——TCP协议、UDP协议、socket套接字、粘包问题以及解决方法

    网络编程--TCP协议.UDP协议.socket套接字.粘包问题以及解决方法 TCP协议(流式协议) ​ 当应用程序想通过TCP协议实现远程通信时,彼此之间必须先建立双向通信通道,基于该双向通道实现数 ...

  9. 【读书笔记】iOS网络-Web Service协议与风格

    协议指的是在与其它系统交换结构化信息时所要遵循的一套格式,过程与规则.此外,协议定义了在传输过程中所要使用的数据格式.这样,接收系统就能正确地解释结构化信息并做出正应的回应. 1,简单对象访问协议. ...

随机推荐

  1. 【bzoj2333 & luoguP3273】棘手的操作(线段树合并)

    题目传送门:bzoj2333 luoguP3273 这操作还真“棘手”..听说这题是可并堆题?然而我不会可并堆.于是我就写了线段数合并,然后调了一晚上,数据结构毁一生!!!QAQ…… 其实这题也可以把 ...

  2. 解题报告:codeforce 7C Line

    codeforce 7C C. Line time limit per test1 second memory limit per test256 megabytes A line on the pl ...

  3. 自学Java测试代码 - 简单地Student类

    2017-08-23  23:45:38 writer:pprp 写这个还蛮开心的 package test; public class Student { //创建成员变量 String name ...

  4. 跟着vamei复习概率论

    最近重新看了一下概率论,感觉很多东西都遗忘了,还会陷入各种误区,赶紧的纠正回来. 概率论这块,主要内容包括: 事件.条件概率.随机变量.随机变量的分布函数.概率密度.联合分布.期望.方差.协方差. 我 ...

  5. geoserver源码学习与扩展——restAPI访问

    产生这篇文章的想法是在前端通过js调用restAPI时,总是不成功,发送ajax请求时还总是出现类似跨域的问题,后来查找才发现,默认情况下restAPI的访问都需要管理员权限,而通过ajax请求传输用 ...

  6. spring的静态代理和动态代理

    Java静态代理 Jdk动态代理 java代理模式 即Proxy Pattern,23种java常用设计模式之一.代理模式的定义:对其他对象提供一种代理以控制对这个对象的访问. 原理: 代理模式的主要 ...

  7. class文件直接修改_反编译修改class文件变量

    今天笔者同事遇到一个问题,客户同事的数据库连接信息直接写在代码中,连接的密码改了,但是又没有源代码,所以只能直接修改Java class文件. 记录一下修改步骤: 1.下载JClassLib_wind ...

  8. Sql类型

    1.varchar和nvarchar的区别:varchar(n)长度为n个字节的可变长度且非Unicode的字符数据.n 必须是一个介于 1 和 8,000 之间的数值.存储大小为输入数据的字节的实际 ...

  9. angular指令与指令交互

    app.directive('mansory',function(){ return { controller:function($scope){ this.changed = function(){ ...

  10. 我的Android学习路线(二)

    这两天的主要工作: 优化了一下布局界面,原本使用的是相对布局,直观省力,但是考虑了一下还是使用更加主流的线性布局. 完善了一下计算器的功能,比如加入小数运算. 使用线性布局的思路可以用下面的伪代码表示 ...