UI_网络编程

  1. HTTP协议的概念
  2. iOS平台如何实现HTTP协议的请求
  3. 服务器接口的简单介绍 

 


HTTP协议的概念

 

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

 

 

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

 

 


iOS实现网络编程

 HTTP协议请求如何实现

 

如果需要数据

0. 准备NSURL

1. 创建请求对象

设置请求方式:GET、POST

如果选择了POST方式,设置请求数据

2. 创建链接对象并发送请求

使用同步方式或者异步方式

 

    • 网络请求地址对象NSURL
    • 网络请求对象NSURLRequest、NSMutableURLRequest
    • 网络链接对象NSURLConnection
    • 网络链接协议 NSURLConnectionDelegate
    • 网络请求数据信息NSURLResponse 

 NSURL

  1. URL:统一资源定位符,也被称为网址,因特网上标准的资源网址
  2. 一个典型的URL:http://lily:123456@www.google.com/search?hl=en&source=hp&q=mysql&aq=f&oq=&aqi=g10#page 
  3. url的符语法:协议://授权/路径?查询
  4. 协议:ftp://(文本传输协议)  http://(超文本传输协议)  https://(安全超文本传输协议)  file://(本地文件协议)
  5. URL作为网址字符串包含很多请求参数,NSURL对网址字符串进行封装,可以使用NSURL对象获取相应的参数。
  6. absoluteString:http://lily:123456@www.google.com/search?hl=en&source=hp&q=mysql&aq=f&oq=&aqi=g10#page
  7. scheme:http
  8. host:www.google.com
  9. user:lily
  10. password:123456
  11. port:8080
  12. query:hl=en&source=hp&q=mysql&aq=f&oq=&aqi=g10#page
请求方式:GET、POST

 

相同点:都能给服务器传输数据

不同点:

  1. 给服务器传输数据的方式
    • GET:通过网址字符串
    • POST:通过data
  2. 传输数据的大小
    • GET:网址字符串最多255字节
    • POST:使用NSData,容量超过1G
  3. 安全性
    • GET:所有传输给服务器的数据,显示在网址里,类似于密码的明文输入,直接可见。
    • POST:数据转换成NSData(二进制数据),类似于密码的密文输入,无法直接读取

 

连接方式:同步连接、异步连接

同步连接:程序容易出现假(卡)死现象

异步连接:等待数据返回

异步连接有两种实现方式 :

设置代理,接收数据

实现block 

同步连接

1 + (NSData *)sendSynchronousRequest:(NSURLRequest *)request returningResponse:(NSURLResponse **)response error:(NSError **)error;

 异步连接(代理)

  1. 设置NSURLConnection代理
  2. 实现相应的代理方法:开始响应接收数据、接收数据、成功、失败 
1 - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response;
2 - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data;
3 - (void)connectionDidFinishLoading:(NSURLConnection *)connection;
4 - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error;

 异步连接(block)

1 + (void)sendAsynchronousReauest:(NSURLRequest *)request queue:(NSOperationQueue *)queue completionHandler:(void (^)(NSURLResponse *response, NSData *data, NSError *connectionError))handler;

 NSURLResponse

根据网络请求协议,封装了服务器返回数据的部分信息。服务器 响应网络请求后,返回数据的部分信息及数据本身。

1 expectedContentLength
2 suggestedFilename
3 MIMEType
4 textEncodingName
5 URL

 NSHTTPURLResponse

NSURLResponse的子类,封装有关HTTP协议的响应信息。存储了HTTP协议的响应头信息,状态码。

1 allHeaderFields
2 statusCode 

 如果网络请求时使用HTTP协议,NSURLResponse就是NSHTTPURLResponse


 服务器接口的简单介绍

 

 PHP接口的简单实现

 网络请求方式分为:GET、POST,是由服务器的实现方式决定,分为:GET、POST、GET或POST

 服务器端PHP简单接口

 PHP中使用不同的函数获取数据,支持不同的请求方式:

GET请求:使用$_GET["key"]获取数据网址中的数据

POST请求:使用$_POST["key"]获取上传data中的数据

GET、POST请求:使用$_REQUEST["key"]获取数据 

 完成与PHP接口的交互

 在iOS平台使用NSURL、NSURLRequest等对象完成与接口的交互。

 

总结 

  • GET请求方式、POST请求方式
  • 同步、异步连接方式
  • 网络请求步骤:

    1. NSURL 
    2. NSURLRequest
    3. NSURLConnection
    4. 处理Error或者返回数据 

 

 

 

 

 

posted @ 2015-04-07 16:59  captivity  阅读(135)  评论(0)    收藏  举报