iOS 通过URL网络获取XML数据的两种方式
下面简单介绍如何通过url获取xml的两种方式。
第一种方式相对简单,使用NSData的构造函数dataWithContentsOfURL;不多解释,直接上代码咯。
NSURL *url = [NSURL URLWithString:@"http://222.73.161.212/ispace2/servlet/com.lemon.xml.XmlAction"];//A Boolean value that turns an indicator of network activity on or off.[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;NSData *xmlData = [NSData dataWithContentsOfURL:url];[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;NSString *xmlString = [[NSString alloc] initWithData:xmlData encoding:NSUTF8StringEncoding];if (xmlData == nil) {NSLog(@"File read failed!:%@", xmlString);}else {NSLog(@"File read succeed!:%@",xmlString);}
上面的 NSData *xmlData = [NSData dataWithContentsOfURL:url]; 就是获取xml的关键啦。
注意:如果直接输出xmlData的话会是一对unicode,所以用UTF-8编码转换成是String进行输出就好啦。
第二种方式:通过NSURLConnection建立网络连接,并实现它的几个委托方法,从而获取数据。
代码如下,应该可以看懂的。
@implementation ViewController {BOOL getXmlDone; //是否停止获取xml数据的标志NSMutableData *xmlData; //存储获得的xml数据
}//自定义的一个方法
- (void) getXML {//获取xmlxmlData = [NSMutableData data];//Clears the receiver’s cache, removing all stored cached URL responses.//清除接收器的缓存,删除所有存储的高速缓存的URL的响应。[[NSURLCache sharedURLCache] removeAllCachedResponses];NSURL *url = [NSURL URLWithString:@"http://222.73.161.212/ispace2/servlet/com.lemon.xml.XmlAction"];NSURLRequest *theRequest = [NSURLRequest requestWithURL:url];//create the connection with the request and start loading the dataNSURLConnection *urlConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];[self performSelectorOnMainThread:@selector(downloadStarted) withObject:nil waitUntilDone:NO];if (urlConnection != nil) {do {[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];} while (!getXmlDone);}
}#pragma mark NSURLConnection Delegate methods
- (NSCachedURLResponse *)connection:(NSURLConnection *)connection willCacheResponse:(NSCachedURLResponse *)cachedResponse {return nil;
}
// Forward errors to the delegate.
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {getXmlDone = YES;
}
// Called when a chunk of data has been downloaded.
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {// Append the downloaded chunk of data.[xmlData appendData:data];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {[self performSelectorOnMainThread:@selector(downloadEnded) withObject:nil waitUntilDone:NO];getXmlDone = YES;
}
- (void)downloadStarted {[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
}
- (void)downloadEnded {[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}- (void)viewDidLoad
{[super viewDidLoad];// Do any additional setup after loading the view, typically from a nib.[self getXML];NSString *xmlString = [[NSString alloc] initWithData:xmlData encoding:NSUTF8StringEncoding];NSLog(@"data: %@",xmlString);
}- (void)didReceiveMemoryWarning
{[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated.
}@end
小结一下,第一种简单,一次性获取所有的xml数据,第二种有点复杂,当然其灵活性也更好。
要验证获取的数据的准确性的话,就点击你的url吧!http://222.73.161.212/ispace2/servlet/com.lemon.xml.XmlAction
OK,下一篇文章将会介绍如何解析xml。come on!
iOS 通过URL网络获取XML数据的两种方式相关推荐
- html中获取modelandview中的json数据_从Bitmap中获取YUV数据的两种方式
从Bitmap中我们能获取到的是RGB颜色分量,当需要获取YUV数据的时候,则需要先提取R,G,B分量的值,然后将RGB转化为YUV(根据具体的YUV的排列格式做相应的Y,U,V分量的排列) 所以这篇 ...
- Spark-Streaming获取kafka数据的两种方式-Receiver与Direct的方式
Spark-Streaming获取kafka数据的两种方式-Receiver与Direct的方式,可以从代码中简单理解成Receiver方式是通过zookeeper来连接kafka队列,Direct方 ...
- Servlet获取Excel中数据的两种方式
Servlet解析Excel文件的两种方式 简单分享一下Servlet通过解析Excel文件得到其中数据的两种方式 第一种:前端获取 思路:通过layui的第三方插件 layui.excel 解析ex ...
- ajax获取后台数据的几种方式及如何获取ajax内部的数据供外部使用
文章目录 1 ajax获取后台数据的几种方式 1.1 原生js的ajax方式 1.1.1 get 1.1.2 post 1.2 jQuery封装的ajax方式 1.2.1 $.ajax 1.2.2 $ ...
- Spark读取Hive数据的两种方式与保存数据到HDFS
Spark读取Hive数据的两种方式与保存数据到HDFS Spark读取Hive数据的方式主要有两种 1. 通过访问hive metastore的方式,这种方式通过访问hive的metastore元数 ...
- 向服务器端提交数据的两种方式
朴素版: ...
- ajax加载vue数据,详解使用Vue.Js结合Jquery Ajax加载数据的两种方式
整理文档,搜刮出一个使用vue.js结合jquery ajax加载数据的两种方式的代码,稍微整理精简一下做下分享. 废话不多说,直接上代码 html代码 demo {{message }} 测试jqu ...
- Android获取IP地址的两种方式(准确版)
原文:https://blog.csdn.net/sinat_16458039/article/details/50260589 最近看了好多网上获取IP地址的例子,发现好多都不完全准确,这里我写一下 ...
- MySQL 清空表数据的两种方式和区别
在MySQL中删除数据有两种方式:truncate table 表名.delete from 表名. 它们在以下方面存在区别: 执行效率 truncate不扫描表,相当于重新创建了表,只保留了表的结构 ...
最新文章
- 雷电2接口_地表最强?代替电脑的所有接口,雷电3或有望一统接口江湖
- idea swagger生成接口文档_spring boot集成Swagger-UI接口文档
- MongoDB 征途
- 被关起来日子的流水帐
- 法定节假日违规组织培训,51talk被通报批评整改不到位
- 基于asp.net基层部队后勤管理系统的设计与实现
- Android中使用Iconfont图标制作自己的矢量图库
- 特教学校计算机课,特教学校引入编程课 为听障孩子打开智能之门
- linux测试upnp,UPnP linux新手入门
- Spring Cloud Gateway的断路器(CircuitBreaker)功能
- VMM物理内存、虚拟内存管理,偷页算法
- linux下安装MySQL5.7及遇到的问题总结
- oracle使用text类型,oracle数据库中text类型用什么类型表示
- 如何查看自己的公网ip
- 电视剧《猎毒人》观后感
- Unity 3D 创建 合适角度 圆环 内 五边形柱体 mesh
- 经典过桥问题的思路解析
- loadrunner入门教程(10)--代理录制
- CSS3实用效果大全
- Hystrix服务监控
热门文章
- java毕业设计橱柜定制系统Mybatis+系统+数据库+调试部署
- 榆熙教育:客户人群标签是什么,拼多多如何做好标签分类
- 兼容各大主流浏览器的常用CSS Hack汇总
- 企业微信加密消息体_加解密方案的详细说明
- linux下ping函数的源码,linux下ping命令的实现源码(转)
- 澳洲国立大学工程和计算机学院,2020年澳洲国立大学工程与计算机科学学院专业设置(课程设置)如何?难度大不大?...
- 小鬼学cocos2dX笔记01——创建精灵动画(一)
- 好看视频MAU翻2.3倍:日活2亿的百度App加持矩阵产品
- shiro中devtools:java.lang.ClassCastException: cn.model.User cannot be cast to cn.model.User
- FFmpeg文件转封装