iOS 通过URL网络获取XML数据的两种方式
转载于:http://blog.csdn.net/crayondeng/article/details/8738768
下面简单介绍如何通过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 {
- //获取xml
- xmlData = [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 data
- NSURLConnection *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数据的两种方式的更多相关文章
- SparkStreaming获取kafka数据的两种方式:Receiver与Direct
简介: Spark-Streaming获取kafka数据的两种方式-Receiver与Direct的方式,可以简单理解成: Receiver方式是通过zookeeper来连接kafka队列, Dire ...
- 工具篇-Spark-Streaming获取kafka数据的两种方式(转载)
转载自:https://blog.csdn.net/weixin_41615494/article/details/7952173 一.基于Receiver的方式 原理 Receiver从Kafka中 ...
- Spark-Streaming获取kafka数据的两种方式:Receiver与Direct的方式
简单理解为:Receiver方式是通过zookeeper来连接kafka队列,Direct方式是直接连接到kafka的节点上获取数据 Receiver 使用Kafka的高层次Consumer API来 ...
- spark-streaming获取kafka数据的两种方式
简单理解为:Receiver方式是通过zookeeper来连接kafka队列,Direct方式是直接连接到kafka的节点上获取数据 一.Receiver方式: 使用kafka的高层次Consumer ...
- jQuery异步获取json数据的2种方式
jQuery异步获取json数据有2种方式,一个是$.getJSON方法,一个是$.ajax方法.本篇体验使用这2种方式异步获取json数据,然后追加到页面. 在根目录下创建data.json文件: ...
- 使用web.xml方式加载Spring时,获取Spring context的两种方式
使用web.xml方式加载Spring时,获取Spring context的两种方式: 1.servlet方式加载时: [web.xml] <servlet> <servlet-na ...
- easyUI之datagrid绑定后端返回数据的两种方式
先来看一下某一位大佬留下的easyUI的API对datagrid绑定数据的两种方式的介绍. 虽然精简,但是,很具有“师傅领进门,修行靠个人”的精神,先发自内心的赞一个. 但是,很多人和小编一样,第一次 ...
- SparkStreaming与Kafka,SparkStreaming接收Kafka数据的两种方式
SparkStreaming接收Kafka数据的两种方式 SparkStreaming接收数据原理 一.SparkStreaming + Kafka Receiver模式 二.SparkStreami ...
- strus2中获取表单数据 两种方式 属性驱动 和模型驱动
strus2中获取表单数据 两种方式 属性驱动 和模型驱动 属性驱动 /** * 当前请求的action在栈顶,ss是栈顶的元素,所以可以利用setValue方法赋值 * 如果一个属性在对象栈,在页面 ...
随机推荐
- PHP:第五章——字符串与数组及其他函数
<?php header("Content-Type:text/html;charset=utf-8"); //1.str_split——将字符串转换为数组. /*$str= ...
- 高级浏览器-SRWare Iron 29.0.1600.0 版本发布
SRWare Iron是德国一安全公司srware改造的Chrome(铬)命名为铁(iron)的浏览器.于2008年9月18日首次发布. 据官方介绍,Iron浏览器砍掉了Chromium原程序中的很多 ...
- IOS下使用多线程
ios有三种主要方法:1.NSThread.2.NSOperation.3.GCD. 1. NSThread: 调用方法如下:如果需要函数参数的话,可以通过Object传递. 1.1:[NSThre ...
- please complete all spokes before continuing 提示
解决方法:输入“1”,按Enter键输入“2”,按Enter键输入“q",按Enter键输入“yes”,按Enter键
- 转asp.net中的App_GlobalResources和App_LocalResources使用
asp.net中的App_GlobalResources和App_LocalResources使用 App_GlobalResources是全局资源文件夹,主要存放一些所有页面都需要用到的信息.App ...
- 使用c++实现一个FTP客户端(三)
接上篇:http://www.cnblogs.com/jzincnblogs/p/5217688.html,这篇主要记录编程过程中需要注意的地方以及遇到的一些问题及解决方法. 一.gethostbyn ...
- 第一个openGL程序
一.工具的安装 因为要写C++程序,为了便捷,这里我安装的Visual Studio: 免费使用90天!安装好了之后,我们要为我们的开发安装相应的工具集: 因为我是要在windows上跑的,所以选择如 ...
- NET Core的代码安全分析工具 - Security Code Scan
NET Core的代码安全分析工具 - Security Code Scan https://www.cnblogs.com/edisonchou/p/edc_security_code_scan_s ...
- C#模板引擎 DotLiquid
DotLiquid 是一个简单.快速和安全的模板引擎,移植自 Ruby 的 Liquid 标签. 示例模板: <p>{{ user.name }} has to do:</p> ...
- cocos2dx 安卓真机调试问题汇总
cocos compile编译apk问题汇总: 1,dx编译报错,没有足够的空间 ANTBUILD : [dx] error : Could not create the Java Virtual M ...