支持协议:
• 文件传输协议(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