您的位置:首页 > 移动开发

[IOS]UIWebView实现保存页面和读取服务器端json数据

2013-08-27 16:10 666 查看

如何通过viewView保存访问过的页面?和如何获取并解析服务器端发送过来的json数据?通过一个简单的Demo来学习一下吧!

操作步骤:

1.创建SingleViewApplication应用,新建VIewController,并在xib试图中添加WebView,继承webview的Delegate协议。

2.将ViewController类遵循UIWebViewDelegate和NSURLConnectionDataDelegate协议,并且实现协议中的方法。

ViewController.h:

#import <UIKit/UIKit.h>  @interface ViewController : UIViewController<UIWebViewDelegate,NSURLConnectionDataDelegate> @property (retain, nonatomic) IBOutlet UIWebView *webview; @property (retain, nonatomic) UIAlertView * alert; @property (retain, nonatomic) IBOutlet UITextField *searchText; - (IBAction)searchClick:(id)sender;   @property (retain, nonatomic) IBOutlet UILabel *label; @property (retain, nonatomic) NSURLConnection * connection; @property (retain, nonatomic) NSMutableData * data; @end

VIewController.m:

#import "ViewController.h" @interfaceViewController () @end @implementation ViewController - (void)viewDidLoad { [superviewDidLoad]; // Do any additional setup after loading the view, typically from a nib. //请求网络页面 // NSURL * url = [NSURL URLWithString:@"http://www.taobao.com"]; //一定要加http:// // NSURLRequest * request = [NSURLRequest requestWithURL:url]; // [self.webview loadRequest:request]; // // // //html加载本地网页 // NSString * str = [[NSBundle mainBundle] pathForResource:@"百度图片—全球最大中文图片库" ofType:@"html"]; // str = [NSString stringWithContentsOfFile:str encoding:NSUTF8StringEncoding error:nil]; // NSLog(@"%@",str); // [self.webview loadHTMLString:str baseURL:[[NSBundle mainBundle]bundleURL]]; // self.label.text =@"正在请求数据"; //step1:请求地址 //保存页面 //NSString * urlString = @"http://www.baidu.com"; //访问服务器获取json数据 NSString * urlString =@"http://www.weather.com.cn/data/cityinfo/101020100.html"; NSURL * url = [NSURLURLWithString:urlString]; //step2:实例化一个request NSURLRequest * request = [NSURLRequestrequestWithURL:urlcachePolicy:NSURLRequestUseProtocolCachePolicytimeoutInterval:30.0]; //step3:创建链接 self.connection = [[NSURLConnectionalloc]initWithRequest:request delegate:self]; if(self.connection) { NSLog(@"创建链接成功"); }else{ NSLog(@"创建链接失败"); } [url release]; [urlString release]; }
- (void)didReceiveMemoryWarning { [superdidReceiveMemoryWarning]; // Dispose of any resources that can be recreated. }
- (void)dealloc { [_webview release]; [_searchTextrelease]; [_label release]; [super dealloc]; } //获取数据 -(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { //接受一个服务端回话,再次一般初始化接受数据的对象 //NSLog(@"返回数据类型%@",[response ]); //NSLog(@"返回数据编码%@",[response text]); NSMutableData * data = [[NSMutableDataalloc]init]; self.data = data; [data release]; } //不断的获取数据 -(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { //接受返回数据,这个方法可能会被调用多次,因此将多次返回数据加起来 NSInteger datalength = [datalength]; NSLog(@"返回数据量:%d",datalength); [self.dataappendData:data]; } //获取文件地址 -(NSString *)dataFilePath:(NSString*)fileName { NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES); NSString *document=[pathsobjectAtIndex:0]; return [documentstringByAppendingPathComponent:fileName]; }
-(void)connectionDidFinishLoading:(NSURLConnection *)connection { // //连接结束 NSLog(@"%d",[self.datalength]); self.label.text =@"请求结束"; //可以下载图片 //[self.data writeToFile:[self dataFilePath:@"image.jpg"] atomically:YES]; NSString * mystr = [[NSStringalloc]initWithData:self.dataencoding:NSUTF8StringEncoding]; [mystr writeToFile:[selfdataFilePath:@"百度图片—全球最大中文图片库.html"] atomically:YES encoding:NSUTF8StringEncoding error:nil]; NSLog(@"最后的结果%@",mystr); [mystr release]; // NSDictionary *weather = [NSJSONSerialization JSONObjectWithData:self.data options:NSJSONReadingMutableContainers error:nil]; // NSLog(@"%@",weather); // [weather writeToFile:[self dataFilePath:@"weather.plist"] atomically:YES]; }
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error { self.label.text =@"连接失败"; } - (IBAction)searchClick:(id)sender { } @end

结果:

2013-08-27 16:09:18.821 WebViewDemo[673:c07] 创建链接成功 2013-08-27 16:09:19.161 WebViewDemo[673:c07] 返回数据量:153 2013-08-27 16:09:19.161 WebViewDemo[673:c07] 153 2013-08-27 16:09:19.193 WebViewDemo[673:c07] 最后的结果{"weatherinfo":{"city":"上海","cityid":"101020100","temp1":"32℃","temp2":"27℃","weather":"多云","img1":"d1.gif","img2":"n1.gif","ptime":"11:00"}}

==================== 迂者 丁小未 CSDN博客专栏================= MyBlog:http://blog.csdn.net/dingxiaowei2013 MyQQ:1213250243 Unity QQ群:858550 cocos2dx QQ群:280818155 ====================== 相互学习,共同进步 =================== 转载请注明出处:http://blog.csdn.net/dingxiaowei2013/article/details/10399799
欢迎关注我的微博:http://weibo.com/u/2590571922
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: