ios网络请求配置文件|ios开发怎么用定时器进行网络请求

『壹』 ios开发怎么用定时器进行网络请求

看下是不是你需要的答案(实在搞不定,可以到我们27773技术众包平台,顾问能帮你找合适的技术牛人)?如何通过URL获取json数据第一种,利用AFJSONRequestOperation,官方网站上给的例子:NSString *str=[NSString stringWithFormat:@"https://alpha-api.app.net/stream/0/posts/stream/global"];NSURL *url = [NSURL URLWithString:[str :NSUTF8StringEncoding]];NSURLRequest *request = [NSURLRequest requestWithURL:url];// 从URL获取json数据AFJSONRequestOperation *operation1 = [AFJSONRequestOperation :requestsuccess:^(NSURLRequest *request, NSHTTPURLResponse *response, NSDictionary* JSON) {NSLog(@"获取到的数据为:%@",JSON);} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id data) {NSLog(@"发生错误!%@",error);}];[operation1 start];第二种方法,利用AFHTTPRequestOperation 先获取到字符串形式的数据,然后转换成json格式,将NSString格式的数据转换成json数据,利用IOS5自带的json解析方法:NSString *str=[NSString stringWithFormat:@"https://alpha-api.app.net/stream/0/posts/stream/global"];NSURL *url = [NSURL URLWithString:[str :NSUTF8StringEncoding]];NSURLRequest *request = [NSURLRequest requestWithURL:url];AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {NSString *html = operation.responseString;NSData* data=[html dataUsingEncoding:NSUTF8StringEncoding];id dict=[NSJSONSerialization JSONObjectWithData:data options:0 error:nil];NSLog(@"获取到的数据为:%@",dict);}failure:^(AFHTTPRequestOperation *operation, NSError *error) {NSLog(@"发生错误!%@",error);}];NSOperationQueue *queue = [[NSOperationQueue alloc] init];[queue addOperation:operation];如果发生Error Domain=NSURLErrorDomain Code=-1000 "bad URL" UserInfo=0x14defc80 {NSUnderlyingError=0x14deea10 "bad URL", NSLocalizedDescription=bad URL这个错误,请检查URL编码格式。有没有进行:NSUTF8StringEncoding如何通过URL获取图片异步获取图片,通过队列实现,而且图片会有缓存,在下次请求相同的链接时,系统会自动调用缓存,而不从网上请求数据。UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0f, 100.0f, 100.0f, 100.0f)]; [imageView setImageWithURL:[NSURL URLWithString:@"http://i.imgur.com/r4uwx.jpg"]placeholderImage:[UIImage imageNamed:@"placeholder-avatar"]]; [self.view addSubview:imageView];上面的方法是官方提供的,还有一种方法,NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.scott-sherwood.com/wp-content/uploads/2013/01/scene.png"]];AFImageRequestOperation *operation = [AFImageRequestOperation :requestimageProcessingBlock:nil success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {self.backgroundImageView.image = image;} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {NSLog(@"Error %@",error);}];[operation start];如果使用第一种URLWithString: placeholderImage:会有更多的细节处理,其实实现还是通过AFImageRequestOperation处理,可以点击URLWithString: placeholderImage:方法进去看一下就一目了然了。所以我觉得还是用第一种好。如何通过URL获取plist文件通过url获取plist文件的内容,用的很少,这个方法在官方提供的方法里面没有NSString *weatherUrl = @"http://www.calinks.com.cn/buick/kls/Buickhousekeeper.plist";NSURL *url = [NSURL URLWithString:[weatherUrl :NSUTF8StringEncoding]];NSURLRequest *request = [NSURLRequest requestWithURL:url];[ addAcceptableContentTypes:[NSSet setWithObject:@"text/plain"]]; *operation = [ :request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id propertyList) {NSLog(@"%@",(NSDictionary *)propertyList);}failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id propertyList) {NSLog(@"%@",error);}];[operation start];如果稍不留神,可能就出现Error Domain=AFNetworkingErrorDomain Code=-1016 "Expected content type {("application/x-plist")}, got text/plain" UserInfo=0x16e91ce0 {NSLocalizedRecoverySuggestion=……, = { }, NSErrorFailingURLKey=, NSLocalizedDescription=Expected content type {("application/x-plist")}, got text/plain, = { URL: } { status code: 200, headers {"Accept-Ranges" = bytes;Connection = "keep-alive";"Content-Length" = 974;"Content-Type" = "text/plain";Date = "Sat, 25 Jan 2014 07:29:26 GMT";Etag = ""1014c2-3ce-4ee63e1c80e00"";"Last-Modified" = "Wed, 25 Dec 2013 23:04:24 GMT";Server = "nginx/1.4.2";} }}可能还会出现乱码,解决办法就是[ addAcceptableContentTypes:[NSSet setWithObject:@"text/plain"]];如何通过URL获取XML数据xml解析使用AFXMLRequestOperation,需要实现苹果自带的NSXMLParserDelegate委托方法,XML中有一些不需要的协议格式内容,所以就不能像json那样解析,还得实现委托。我之前有想过能否所有的XML链接用一个类处理,而且跟服务端做了沟通,结果很不方便,效果不好。XML大多标签不同,格式也不固定,所以就有问题,使用json就要方便的多。第一步;在.h文件中加入委托NSXMLParserDelegate第二步;在.m文件方法中加入代码NSURL *url = [NSURL URLWithString:@"http://113.106.90.22:5244/sshopinfo"];NSURLRequest *request = [NSURLRequest requestWithURL:url];AFXMLRequestOperation *operation =[AFXMLRequestOperation :request success:^(NSURLRequest *request,NSHTTPURLResponse *response, NSXMLParser *XMLParser) {XMLParser.delegate = self;[XMLParser setShouldProcessNamespaces:YES];[XMLParser parse];}failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, NSXMLParser *XMLParser) {NSLog(@"%@",error);}];[operation start];第三步;在.m文件中实现委托方法//在文档开始的时候触发-(void)parserDidStartDocument:(NSXMLParser *)parser{NSLog(@"解析开始!");}//解析起始标记- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{NSLog(@"标记:%@",elementName);}//解析文本节点- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{NSLog(@"值:%@",string);}//解析结束标记- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{NSLog(@"结束标记:%@",elementName);}//文档结束时触发-(void) parserDidEndDocument:(NSXMLParser *)parser{NSLog(@"解析结束!");


赞 (0)