网络编程

1、网络编程的必要性:从OC语言面向对象基础学习,iOS平台常用视图控件的使用,多种数据存储方式,以及上节课学习的XML、JSON数据解析。苦逼了这么久,学习这么多只是是为了做什么?我们实现了编写一个iOS平台的程序,解析本地文件的数据并展示,但是我们怎么才能向网易新闻、酷我音乐那样,从网络服务器上请求数据,获取文本和多媒体文件(音乐、视频、图片等)?这节课我们就来学习iOS平台下的网络编程。
2、要实现iOS平台的网络编程,首先要了解C/S模式。客户端/服务器模式,由客户端和服务器完成数据交换的过程,即客户端提交请求给服务器为了获取数据,然后服务器处理接收到的请求,并返回数据给客户端的过程。比如网易新闻,虽然有很多种类的新闻,但是所有的新闻都在网易的服务器中存储着,客户端请求哪种类型的数据,服务器就返回请求的数据。
3、总说服务器,先来了解一下什么是服务器。服务器,从广义上说:一个管理资源并为用户提供服务的计算机软件,例如,文件服务器,数据库服务器(MySQL)等等;从狭义上说:能够通过网络对外提供服务的、安装了某些软件的、高性能的计算机。比如很多公司都有自己的服务器机房,管理着自己公司的数据,并通过网络提供数据。例如:腾讯,我们的qq好友,微信好友等等全部是通过网络从服务器获取的。
4、客户端和服务器的种类都很多,在这么复杂的网络环境下,为了能够实现数据交换,就必须遵守一定的规则。协议有很多,我们可以基于一种协议实现,即HTTP协议。超文本传输协议,详细定义了浏览器和万维网服务器之前的通信规则,是实现从万维网服务器获取文本信息到本地浏览器的传输协议。
5、HTTP协议介绍:是一个应用层协议,由请求和响应构成(客户端发起请求,服务器进行响应)。特点:
   (1)支持C/S模式。
   (2)简单快速:客户端向服务器请求服务时,只需要传送请求路径(url)和方法(get,post,delete,put,head)。
   (3)可以传输任意类型的数据对象。使用Content-Type标记。
   (4)无连接。即每次只处理一个请求,服务器处理完客户端的请求,并受到客户端的应答,就断开连接,不会一直处于连接状态,节省传输时间。
   (5)无状态。http不会记录上一次的连接状态,再次访问一个网页信息,服务器需要重新处理客户端请求,重新传输数据。应答比较快,但是每次都要重新传数据,可能会导致数据量增大。
6、刚才说,客户端向服务器请求服务时,只需要传送请求路径和方法,请求路径就是进行网络请求的接口,就是通常说的网址,是资源在万维网服务器上的唯一路径。有了查找资源的路径、客户端按照http协议的格式定义了网络请求,那要通过什么方式将请求发送给服务器呢?请求方法,http支持的请求方法:GET、POST、PUT、DELETE。我们输入百度的网址,得到的百度的主页。这个过程是什么?首先浏览器作为客户端,通过http协议,使用get方法,根据网址获取这个路径下的数据,服务器会将html格式的文本、图片等多媒体资源,返回给浏览器,然后浏览器解析这些数据,并将显示到浏览器界面上,就是我们经常看到的网页了。浏览器使用的都是get请求方式,不能是使用其他的。
7、iOS平台编程是如何实现的呢?通过使用http协议实现。苹果系统提供了一些类,这些类可以帮助我们实现基于http的网络编程。
8、URL统一资源定位符,网络中的每个资源都有自己的URL,url不是简单的字符串,包含一些语法。  

请求方式:   GET                 POST          请求方式由服务器确定
链接方式:   同步(单线程,主线程)     异步(多线程)         客户端自己确定

1、同步请求可以从因特网请求数据,一旦发送同步请求,程序将停止用户交互,直至服务器返回数据完成,单线程操作, 一个线程发送请求, 然后该线程等待服务器发送相应.(就比如: 快递公司不安排派递员了, 你就派个人去帮你去询问你的快递到了没, 到了之后他再带回来, 全都是他一个人在工作, 这个时候你就一直在等着他回来) 才可以进行下一步操作, 意为单线程阻塞.
2、异步请求不会阻塞主线程,而会建立一个新的线程来操作,用户发出异步请求后,依然可以对UI进行操作,程序可以继续运行. 多线程同时工作, 一个线程负责发送请求, 另一个线程负责接收服务器响应信息.(异步好比有两个人在为你工作(土豪), 一个人负责送快递(快递员), 一个人负责帮你取快递(跟班), 两个人互相不影响,各干各的, 土豪会等人嘛? 当然该干啥干啥) 异步请求的好处是不阻塞当前线程, 但相对于同步请求略为复杂, 至少要添加两个回调方法来获取异步事件.

3、GET请求,将参数直接写在访问路径上。操作简单,不过容易被外界看到,安全性不高,地址最多255字节;

4、POST请求,将参数放到body里面。POST请求操作相对复杂,需要将参数和地址分开,不过安全性高,参数放在body里面,不易被捕获。

5、同步和异步的区别在于连接方式不同:

 同步用:

 NSData * data = [NSURLConnection sendSynchronousRequest:request returningResponse:Nil error:nil];

异步用:

 NSURLConnection * connection = [[NSURLConnection alloc]initWithRequest:request delegate:self];(需要在.h中指定代理)


 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值