[IOS]网络操作+图片的下载和读取+json数据读取

您所在的位置:网站首页 java读取本地json文件 [IOS]网络操作+图片的下载和读取+json数据读取

[IOS]网络操作+图片的下载和读取+json数据读取

2023-05-06 02:43| 来源: 网络整理| 查看: 265

[IOS]网络操作+图片的下载和读取+json数据读取 原创

蓬莱仙羽 2023-04-27 12:46:09 博主文章分类:IOS应用 ©著作权

文章标签 #import bundle 获取数据 文章分类 Html/CSS 前端开发

©著作权归作者所有:来自51CTO博客作者蓬莱仙羽的原创作品,请联系作者获取转载授权,否则将追究法律责任

如何读取沙盒中的文件,和保存网络资源到沙盒中?

-(NSString *)dataFilePath:(NSString*)fileName { NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES); NSString *document=[paths objectAtIndex:0]; return [documentstringByAppendingPathComponent:fileName]; } -(void)connectionDidFinishLoading:(NSURLConnection { //可以下载图片 [self.datawriteToFile:[selfdataFilePath:@"image.jpg"]atomically:YES]; self.webView.hidden =YES; //将沙盒中的图片加载到界面中 NSString *path = [selfdataFilePath:@"image.jpg"]; UIImage *imag = [[UIImagealloc]initWithContentsOfFile:path]; UIImageView *img = [[UIImageViewalloc]initWithImage:imag]; CGRect rect = CGRectMake(0,0,320,460); frame [self.viewaddSubview:img]; }

进入主题,接下来我要实现三个功能:1.访问网页2.从网上加载图片资源到本地3.发送get请求获取到天气预报的接口,然后保存到本地接着是json解析功能设计:1.webView的使用PageViewController.h:#import @interface PageViewController : UIViewController @property (retain, nonatomic) IBOutlet UIWebView *webView; - (IBAction)GoClick:(id)sender; @property (retain, nonatomic) IBOutlet UITextField *txtUrl; - (IBAction)resignBoardClick:(id)sender; @property(retain,nonatomic)NSURL *url; @property(nonatomic,retain)UIAlertView *alert; @end

PageViewController.m:// // PageViewController.m // 地图+网络 // // Created by 丁小未 on 13-8-27. // Copyright (c) 2013年 dingxiaowei. All rights reserved. // #import "PageViewController.h" @interface PageViewController () @end @implementation PageViewController - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { self.title = @"页面"; } return self; } -(void)pageLoad1:(NSURL *)url { NSURLRequest *request = [NSURLRequest requestWithURL:url]; [self.webView loadRequest:request]; } - (void)viewDidLoad { [super viewDidLoad]; self.url = [NSURL URLWithString:@"http://www.baidu.com"]; NSURLRequest *request = [NSURLRequest requestWithURL:self.url]; [self pageLoad1:self.url]; } -(void)webViewDidFinishLoad:(UIWebView *)webView { [self.alert dismissWithClickedButtonIndex:0 animated:YES]; } -(void)webViewDidStartLoad:(UIWebView *)webView { self.alert = [[UIAlertView alloc] initWithTitle:@"Loading..." message:nil delegate:nil cancelButtonTitle:nil otherButtonTitles: nil]; [self.alert show]; UIActivityIndicatorView *aiv = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; aiv.center = CGPointMake(self.alert.bounds.size.width/2, self.alert.bounds.size.height/2); [aiv startAnimating]; [self.alert addSubview:aiv]; } - (void)dealloc { [_webView release]; [_url release]; [_txtUrl release]; [_alert release]; [super dealloc]; } - (IBAction)GoClick:(id)sender { [self.txtUrl resignFirstResponder]; if (self.txtUrl.text != nil) { self.url = [NSURL URLWithString:self.txtUrl.text]; [self pageLoad1:self.url]; } else { self.alert = [[UIAlertView alloc] initWithTitle:@"提醒" message:@"地址不能为空" delegate:self cancelButtonTitle:@"OK"otherButtonTitles: nil]; [self.alert show]; } } - (IBAction)resignBoardClick:(id)sender { [self.txtUrl resignFirstResponder]; } @end

xib:

[IOS]网络操作+图片的下载和读取+json数据读取_bundle

效果图:请求网络的加载效果:

[IOS]网络操作+图片的下载和读取+json数据读取_获取数据_02

请求结束的效果图:

[IOS]网络操作+图片的下载和读取+json数据读取_获取数据_03

2.根据URL地址请求网络图片并且显示出来PicViewController.h:

// // PicViewController.h // 地图+网络 // // Created by 丁小未 on 13-8-27. // Copyright (c) 2013年 dingxiaowei. All rights reserved. // #import @interface PicViewController : UIViewController @property(nonatomic,retain)NSURL *url; @property (retain, nonatomic) IBOutlet UIWebView *webView; @property (retain, nonatomic) NSMutableData * data; @property (retain, nonatomic) NSURLConnection * connection; @end

PicViewController.m:

// // PicViewController.m // 地图+网络 // // Created by 丁小未 on 13-8-27. // Copyright (c) 2013年 dingxiaowei. All rights reserved. // #import "PicViewController.h" @interface PicViewController () @end @implementation PicViewController - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization } return self; } - (void)viewDidLoad { [super viewDidLoad]; NSString *urlString =@"http://e.hiphotos.baidu.com/album/w%3D2048/sign=76d548844afbfbeddc59317f4cc8f636/267f9e2f07082838334a05afb999a9014d08f1c2.jpg"; self.url = [NSURL URLWithString:urlString]; NSURLRequest *request = [[NSURLRequest alloc] initWithURL:self.url]; [self.webView loadRequest:request]; //step3:创建链接 self.connection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; if(self.connection) { NSLog(@"创建链接成功"); }else{ NSLog(@"创建链接失败"); } [urlString release]; } //获取数据 -(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { NSMutableData * data = [[NSMutableData alloc] init]; self.data = data; [data release]; } //不断的获取数据 -(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { //接受返回数据,这个方法可能会被调用多次,因此将多次返回数据加起来 NSInteger datalength = [data length]; NSLog(@"返回数据量:%d",datalength); [self.data appendData:data]; } //获取文件地址 -(NSString *)dataFilePath:(NSString*)fileName { NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES); NSString *document=[paths objectAtIndex:0]; return [document stringByAppendingPathComponent:fileName]; } -(void)connectionDidFinishLoading:(NSURLConnection *)connection { //可以下载图片 [self.data writeToFile:[self dataFilePath:@"image.jpg"] atomically:YES]; self.webView.hidden = YES; //将沙盒中的图片加载到界面中 NSString *path = [self dataFilePath:@"image.jpg"]; UIImage *imag = [[UIImage alloc] initWithContentsOfFile:path]; UIImageView *img = [[UIImageView alloc] initWithImage:imag]; CGRect rect = CGRectMake(0, 0, 320,460); img.frame = rect; [self.view addSubview:img]; } -(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error { NSLog(@"连接失败"); } - (void)dealloc { [_webView release]; [super dealloc]; } @end

xib:

[IOS]网络操作+图片的下载和读取+json数据读取_获取数据_04

请求后的效果图:

[IOS]网络操作+图片的下载和读取+json数据读取_获取数据_05

3.请求天气预报的接口然后json解析请求后的数据并且保存到本地显示出来WeatherViewController.h:// // WeatherViewController.h // 地图+网络 // // Created by 丁小未 on 13-8-27. // Copyright (c) 2013年 dingxiaowei. All rights reserved. // #import @interface WeatherViewController : UIViewController @property (retain, nonatomic) IBOutlet UITextField *txtCity; @property (retain, nonatomic) IBOutlet UITextField *txtMaxTem; @property (retain, nonatomic) IBOutlet UITextField *txtMinTem; @property (retain, nonatomic) IBOutlet UITextField *txtTempreture; @property(retain,nonatomic)NSMutableData *data; @property (retain, nonatomic) IBOutlet UILabel *label; @property(retain,nonatomic)NSURLConnection *connection; - (IBAction)resignBoard:(id)sender; @end

WeatherViewController.m:// // WeatherViewController.m // 地图+网络 // // Created by 丁小未 on 13-8-27. // Copyright (c) 2013年 dingxiaowei. All rights reserved. // #import "WeatherViewController.h" @interface WeatherViewController () @end @implementation WeatherViewController - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { } return self; } - (void)viewDidLoad { [super viewDidLoad]; self.label.text = @"正在请求数据"; NSString *urlString = @"http://www.weather.com.cn/data/cityinfo/101020100.html"; NSURL *url = [NSURL URLWithString:urlString]; //实例化一个request NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:30.0]; //创建连接 self.connection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; if (self.connection) { NSLog(@"创建连接成功"); } else { NSLog(@"创建连接失败"); } [url release]; [urlString release]; } //获取数据 -(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { //接受一个服务端回话,再次一般初始化接受数据的对象 //NSLog(@"返回数据类型%@",[response ]); //NSLog(@"返回数据编码%@",[response text]); NSMutableData * data = [[NSMutableData alloc] init]; self.data = data; [data release]; } //不断的获取数据 -(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { //接受返回数据,这个方法可能会被调用多次,因此将多次返回数据加起来 NSInteger datalength = [data length]; NSLog(@"返回数据量:%d",datalength); [self.data appendData:data]; } //获取文件地址 -(NSString *)dataFilePath:(NSString*)fileName { NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES); NSString *document=[paths objectAtIndex:0]; return [document stringByAppendingPathComponent:fileName]; } -(void)connectionDidFinishLoading:(NSURLConnection *)connection { //连接结束 NSLog(@"%d",[self.data length]); 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]; NSLog(@"%@",[weather allKeys]); NSDictionary *dic = [weather objectForKey:@"weatherinfo"]; NSLog(@"%@",dic); self.txtCity.text = [dic objectForKey:@"city"]; self.txtTempreture.text = [dic objectForKey:@"weather"]; self.txtMaxTem.text = [dic objectForKey:@"temp2"]; self.txtMinTem.text = [dic objectForKey:@"temp1"]; } -(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error { self.label.text =@"连接失败"; } - (void)dealloc { [_txtCity release]; [_txtMaxTem release]; [_txtMinTem release]; [_txtTempreture release]; [_label release]; [super dealloc]; } - (IBAction)resignBoard:(id)sender { [self.txtMaxTem resignFirstResponder]; [self.txtMinTem resignFirstResponder]; [self.txtCity resignFirstResponder]; [self.txtTempreture resignFirstResponder]; } @end

xib:

[IOS]网络操作+图片的下载和读取+json数据读取_#import_06

请求网络后的效果图:

[IOS]网络操作+图片的下载和读取+json数据读取_#import_07

Demo源文件下载(猛戳) 收藏 评论 分享 举报

上一篇:Unity表格配置编辑工具

下一篇:Unity动画生成工具



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3