[IOS]UIWebView实现保存页面和读取服务器端json数据
如何通过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 @implementationViewController - (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:requestdelegate:self]; if(self.connection) { NSLog(@"创建链接成功"); }else{ NSLog(@"创建链接失败"); } [urlrelease]; [urlStringrelease]; } - (void)didReceiveMemoryWarning { [superdidReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } - (void)dealloc { [_webviewrelease]; [_searchTextrelease]; [_labelrelease]; [superdealloc]; } //获取数据 -(void)connection:(NSURLConnection*)connection didReceiveResponse:(NSURLResponse*)response { //接受一个服务端回话,再次一般初始化接受数据的对象 //NSLog(@"返回数据类型%@",[response ]); //NSLog(@"返回数据编码%@",[response text]); NSMutableData* data = [[NSMutableDataalloc]init]; self.data= data; [datarelease]; } //不断的获取数据 -(void)connection:(NSURLConnection*)connection didReceiveData:(NSData*)data { //接受返回数据,这个方法可能会被调用多次,因此将多次返回数据加起来 NSIntegerdatalength = [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]; [mystrwriteToFile:[selfdataFilePath:@"百度图片—全球最大中文图片库.html"] atomically:YESencoding:NSUTF8StringEncodingerror:nil]; NSLog(@"最后的结果%@",mystr); [mystrrelease]; // 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 本文转蓬莱仙羽51CTO博客,原文链接:http://blog.51cto.com/dingxiaowei/1366416,如需转载请自行联系原作者