首页 > 代码库 > URL 以及 UIWebView
URL 以及 UIWebView
URL 只是一个 路径 :
协议头:// 域名/ 资源 (就是要查询的内容)
比如http://m.baidu.com/s?word=iOS
上面的是 手机版的域名
UIWebView :
也是一个IOS 程序的控件 能拖 能用代码实现 能设置代理
nUIWebView是iOS内置的浏览器控件,可以浏览网页、打开文档等
n能够加载html/htm、pdf、docx、txt等格式的文件
n系统自带的Safari浏览器就是通过UIWebView实现的
n在iOS7之前,UILabel、UITextField,以及UITextView都在后台以某种方式使用WebKit来进行文本布 局和渲染的
n名词解释
n渲染:是CG的最后一道工序,将所设计内容制作成最终效果图或者动画的过程
利用UIWebView 加载资源 演示代码
-NSURL 确定要访问的网络资源
-NSURLRequest 建立网络请求
>> 模拟加载百度
// 1.确定要访问的资源——URL
NSURL *url= [NSURLURLWithString:@"http://www.baidu.com"];
// 2.建立网络请求
NSURLRequest*request = [NSURLRequestrequestWithURL:url];
// 3.UIWebView加载网络请求
[self.webViewloadRequest:request];
>> 点击搜索栏调用 (搜索栏代理方法)
// 开始搜索
- (void)searchBarSearchButtonClicked:(UISearchBar*)searchBar
{
NSString*str=searchBar.text;
// 1.判断是否以http开头,如果没有则用百度搜索
if (![strhasPrefix:@"http://"]) {
str= [NSStringstringWithFormat:@"http://m.baidu.com/s?word=%@",str];
}
// 2.在URL中,如果包含中文字符串,需要将字符串转换为带百分号的格式
NSURL *url= [NSURLURLWithString:[strstringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
....
}
>> 当需要回退或者前进时 需要用到代理 (事例程序)
#pragma mark -UIWebView代理方法
#pragma mark - 完成加载,页面链表数据会更新
- (void)webViewDidFinishLoad:(UIWebView*)webView
{
self.goBackButton.enabled=self.webView.canGoBack;
self.goForwardButton.enabled=self.webView.canGoForward;
}
>>> Mime Type :
说白了 Mime Type 就是在 客户端与服务器对话的一个中转站
当客户端给服务端发送请求之后 服务端会给客户端一些 保存在Mime Type里面的数据
然后 客户端一般会用WebView 读取; 利用 (loadData: MIMEType :textEncondingName: baseURL: )方法
总而言之:
(1)网络通过二进制数据流的方式可以传输任何格式的数据
(2)客户端通过通过MimeType就能够知道如何处理接收到的数据
nURL & Request 向服务器发送请求
nResponse 响应,服务器告诉客户端我给了你什么
演示代码:
#pragma 以二进制数据的形式加载文件
- (void)loadDataFile {
// 最最常见的一种情况
// 打开IE,访问网站,提示你安装Flash插件
// 如果没有这个应用程序,是无法用UIWebView打开对应的文件的
// 应用场景:加载从服务器上下载的文件,例如pdf,或者word,图片等等文件
// 加载路径 NSURL *fileURL = [[NSBundlemainBundle] URLForResource:@"iOS 7 Programming Cookbook.pdf"withExtension:nil];
// 向服务器发送请求 NSURLRequest *request = [NSURLRequestrequestWithURL:fileURL];
// 服务器的响应对象,服务器接收到请求返回给客户端的 NSURLResponse *respnose = nil;
// 服务器返回的数据 NSData *data = http://www.mamicode.com/[NSURLConnectionsendSynchronousRequest:request returningResponse:&respnose error:NULL];
// 在iOS开发中,如果不是特殊要求,所有的文本编码都是用UTF8
// 先用UTF8解释接收到的二进制数据流
// 用webView 读取
[self.webViewloadData:data MIMEType:respnose.MIMETypetextEncodingName:@"UTF8"baseURL:nil]; }