0
点赞
收藏
分享

微信扫一扫

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

yeamy 2023-05-08 阅读 44


如何通过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
- (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(@"创建链接失败");
    }
release];
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
{
    //接受一个服务端回话,再次一般初始化接受数据的对象
    //NSLog(@"返回数据类型%@",[response ]);
    //NSLog(@"返回数据编码%@",[response text]);
    NSMutableData * data = [[NSMutableDataalloc]init];
self.data
release];
}
//不断的获取数据
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData
{
    //接受返回数据,这个方法可能会被调用多次,因此将多次返回数据加起来
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
{
//    //连接结束
NSLog(@"%d",[self.datalength]);
self.label.text =@"请求结束";
    //可以下载图片
    //[self.data writeToFile:[self dataFilePath:@"image.jpg"] atomically:YES];
    
    NSString * mystr = [[NSStringalloc]initWithData:self.dataencoding:NSUTF8StringEncoding];
writeToFile:[selfdataFilePath:@"百度图片—全球最大中文图片库.html"] atomically:YES encoding:NSUTF8StringEncoding error:nil];
    NSLog(@"最后的结果%@",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
{
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"}}





举报

相关推荐

0 条评论