[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
相关文章推荐
- [IOS]UIWebView实现保存页面和读取服务器端json数据
- [IOS]UIWebView实现保存页面和读取服务器端json数据
- iOS UIWebView仿微信H5页面实现长按保存图片功能
- 读取XML数据,在页面中展现、编辑、保存的实现
- javascript 读取XML数据,在页面中展现、编辑、保存的实现
- 【原创】ExtJs实现定时读取数据,动态加载数据,页面不刷新。Struts 2框架下JSON传值
- javascript 读取XML数据,在页面中展现、编辑、保存的实现
- Unity 使用JSON实现本地数据保存和读取
- android客户端从服务器端获取json数据并解析的实现代码
- Echarts-echart和springMVC实现堆栈图(读取JSON文件数据)
- 读取本地json数据实现省市区三级联动PickerView
- android客户端从服务器端获取json数据并解析的实现代码
- jsp页面导出用jxl方式导出数据到excel表格并下载保存(第二种直接用java类实现)
- (转)android客户端从服务器端获取json数据并解析的实现代码
- Spark1.6.2 java实现读取json数据文件插入MySql数据库
- 通过JS、JQ,实现对json数据调取,并循环展示到页面
- json格式数据取得1- 直接从client读取 (jquery+ajax实现)
- Echarts-echart和springMVC实现堆栈图(读取JSON文件数据)
- 运用fastjson+SharedPreferences 保存、读取复杂数据
- Oracle保存中文数据和读取数据页面显示乱码解决方案