iOS网络编程总结

支持协议:   

• 文件传输协议(ftp://)

•  超文本传输协议(http://)

•  安全128-bit超文本传输协议(https://) •  本地文件路径(file:///)


访问URL步骤:

• 构造NSURL

•  生成一个NSURLRequest

•  通过NSURLConnection发送请求

•  通过返回的NSURLResponse和NSError分析结果


NSURL

一个典型的URL如下:

http://lily:123456@www.google.com/search?hl=en&source=hp&q=mysql&aq=f&oq=&aqi=g10#page


URL组成1:
absoluteString: http://lily:123456@www.google.co ... =f&oq=&aqi=g10#page 
absoluteURL: http://lily:123456@www.google.co ... =f&oq=&aqi=g10#page
baseURL - 如果在构造URL对象时没有指定,则为nil
fragment: page
host: www.google.com
URL组成2:
port: 80,如果没有指定,则为nil
path: /search
query: hl=en&source=hp&q=mysql&aq=f&oq=&aqi=g10
relativePath: /search
relativeString: http://lily:123456@www.google.com:80/search? hl=en&source=hp&q=mysql&aq=f&oq=&aqi=g10#page
URL组成3:
user: lily
password: 123456 
scheme: http


如何构造一个url
• + (id)URLWithString:(NSString *)URLString
• + (id)URLWithString:(NSString *)URLString relativeToURL: (NSURL *)baseURL
• + (id)fileURLWithPath:(NSString *)path isDirectory: (BOOL)isDir
• + (id)fileURLWithPath:(NSString *)path
----------------------------------------------------------
• - (id)initWithScheme:(NSString *)scheme host:(NSString *)host path:(NSString *)path
• - (id)initWithString:(NSString *)URLString
• - (id)initWithString:(NSString *)URLString relativeToURL:(NSURL *)baseURL
• - (id)initFileURLWithPath:(NSString *)path isDirectory:(BOOL)isDir
• - (id)initFileURLWithPath:(NSString *)path

NSURLRequest:
封装了一个针对某个URL的请求信息,可以指明内容的缓存策略
构造URL请求:
• + (id)requestWithURL:(NSURL *)theURL
• + (id)requestWithURL:(NSURL *)theURL cachePolicy: (NSURLRequestCachePolicy)cachePolicy timeoutInterval: (NSTimeInter val)timeoutInterval
• - (id)initWithURL:(NSURL *)theURL
• - (id)initWithURL:(NSURL *)theURL cachePolicy: (NSURLRequestCachePolicy)cachePolicy timeoutInterval: (NSTimeInter val)timeoutInterval
支持的缓存策略:
NSURLRequestUseProtocolCachePolicy 
NSURLRequestReloadIgnoringLocalCacheData 
NSURLRequestReloadIgnoringLocalAndRemoteCacheData 
NSURLRequestReloadIgnoringCacheData 
NSURLRequestReturnCacheDataElseLoad 
NSURLRequestReturnCacheDataDontLoad 
NSURLRequestReloadRevalidatingCacheData

可修改的URL请求
• 如果需要在初始化后仍能对URL请求对象进行修改,可以使用NSMutableURLRequest,可以修改的项目包括: • 缓存策略
• 超时时间
• URL对象
• 主文档地址
• 头信息
• 上行内容 
• 请求方法
• Cookie

发送请求:
可以使用同步或异步的方式发送一个请求,两者的结果 返回内容不同

同步请求:
• NSURLConnection
• + (NSData *)sendSynchronousRequest:(NSURLRequest *)request returningResponse:(NSURLResponse **)response error:(NSError **)error
• 最快捷的方式
• 不能监控内容下载过程

返回数据的处理
• 返回数据封装以NSData
• 一般将其转换为NSString后,才进行处理 
• NSString类中常用的转换方法:
• - (id)initWithData:(NSData *)data encoding: (NSStringEncoding)encoding

响应的处理:
• NSURLRequest对应的响应的元信息封装在NSURLResponse中 
• NSURLResponse
• - (long long)expectedContentLength 
• - (NSString *)suggestedFilename
• - (NSString *)MIMEType
• - (NSString *)textEncodingName 
• - (NSURL *)URL

错误的处理
• 如果请求过程中发生错误,导致请求无法完成,则 error对象不为nil
• NSError
• - (NSString *)localizedDescription


异步请求
• 不影响当前正在进行操作 
• 数据分多次按顺序返回
异步请求步骤:
• 构造连接对象(NSURLConnection)
• 发送请求
• 使用委托监控数据返回过程
• 将多次返回的数据连接成同一个数据对象
• 使用连接后的数据对象
构造连接
• + (NSURLConnection *)connectionWithRequest: (NSURLRequest *)request delegate:(id)delegate
• - (id)initWithRequest:(NSURLRequest *)request delegate: (id)delegate
• - (id)initWithRequest:(NSURLRequest *)request delegate: (id)delegate startImmediately:(BOOL)startImmediately
发送请求
• - (void)start
• - (void) cancel
使用委托
• - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
• - (void)connectionDidFinishLoading:(NSURLConnection *)connection
• - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error

基于网络的ios编程总结:
• 可以使用NSURL构造一个URL
• 可以使用NSURLRequest构造一个请求
• 可以使用NSURLConnection发送一个请求,并返回数据
• 可以使用NSURLResponse和NSError来监测响应和错误 信息

UIWebView
• 内置的浏览器
• 可以显示HTML/XHTML内容,以及执行Javascript脚本 • 可以控制浏览器的内容和访问的URL
• 可以执行前进/后退/刷新等动作
• 可以通过委托监测URL的下载过程
UIWebView常用API
• - (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL
• - (void)loadRequest:(NSURLRequest *)request
• - (void)reload
• BOOL detectsPhoneNumbers
• BOOL scalesPageToFit
转载自:http://www.zpluz.com/thread-113-1-1.html
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值