iOS设备获取服务器上的数据

2014-06-17 16:34:09

[App开发] , , ,

 

我们可以通过NSMutableURLRequest 建立与服务器的链接,然后从服务器拉取数据。有必要认识一下几种类型。NSString 和 NSData 和 NSMutableData 是可以相互转换的。

一般情况下,我们用NSString 拼凑出NSData 然后发送请求,收到NSData然后收集到NSMutableData里面,最后再将NSMutableData进行解析,转变成我们常用的NSString。

 

 

生成请求的方法

    NSString    *RequestURL = [NSString stringWithFormat:@"http://192.168.1.15/test.html"];
    NSURL       *URLStr     = [NSURL URLWithString:RequestURL];
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:URLStr cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];
    [request setHTTPMethod:@"POST"];
    cnt0 = [[NSURLConnection alloc]initWithRequest:request delegate:self];

里面的delegate  十分重要,不delegate 将无法接收数据。

 

在 interface 里面声明数据集

@property (strong,nonatomic) NSMutableData *receiveData0;

 

 

其中 cnt0应该在.m文件的implementation 后面马上定义

@implementation mcViewController

NSURLConnection *cnt0;

- (void)viewDidLoad{
    [super viewDidLoad];
    [_mywebview setDelegate:self];
	// Do any additional setup after loading the view, typically from a nib.
}

 

如果需要POST里面含有数据,可以添加HTTPBody

                NSString *str = @"";
                NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
                [request setHTTPBody:data];

 

 

 

下面是几个delegate 的事件

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
    if (connection==cnt0) {
        //NSHTTPURLResponse *res = (NSHTTPURLResponse *)response;
        _receiveData0 = [NSMutableData data];
    }
    
}

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
    if (connection==cnt0) {
        [self.receiveData0 appendData:data];
        NSLog(@"loading");
    }
    
}

-(void)connectionDidFinishLoading:(NSURLConnection *)connection{
    if (connection==cnt0) {
        NSURL *thisurl = [NSURL URLWithString:@"http://192.168.1.15/"];
        NSString *content = [[NSString alloc]initWithData:_receiveData0 encoding:NSUTF8StringEncoding];
        [_mywebview loadHTMLString:content baseURL:thisurl];
        NSLog(@"Finished");
    }
}

 

 

很多网站的API用的都是API,我们可以通过对应的方法对数据进行解析。

        NSDictionary *data = [NSJSONSerialization JSONObjectWithData:_receiveData1 options:NSJSONReadingMutableLeaves error:nil];
    
    
        NSLog(@"%@",[data objectForKeyedSubscript:@"query"]);
        NSArray *thelist =  [[[[data objectForKeyedSubscript:@"query"] objectForKey:@"pages"] objectForKey:@"78862"] objectForKey:@"revisions"];
        NSDictionary    *getfinal = [thelist objectAtIndex:0];
        NSLog(@"%@",[getfinal objectForKey:@"*"]);

 

这篇博文发表在 App开发 目录下,标签为 , , ,
版权所有,请勿转载。如需引用,请使用链接:https://note.masterchan.me/?p=399
 

您的邮箱地址不会被公开,评论使用Gravatar头像。
Your email address will not be published. This blog is using Gravatar.

正在提交评论...
正在为您准备评论控件