下面简单介绍如何通过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数据的两种方式相关推荐

  1. html中获取modelandview中的json数据_从Bitmap中获取YUV数据的两种方式

    从Bitmap中我们能获取到的是RGB颜色分量,当需要获取YUV数据的时候,则需要先提取R,G,B分量的值,然后将RGB转化为YUV(根据具体的YUV的排列格式做相应的Y,U,V分量的排列) 所以这篇 ...

  2. Spark-Streaming获取kafka数据的两种方式-Receiver与Direct的方式

    Spark-Streaming获取kafka数据的两种方式-Receiver与Direct的方式,可以从代码中简单理解成Receiver方式是通过zookeeper来连接kafka队列,Direct方 ...

  3. Servlet获取Excel中数据的两种方式

    Servlet解析Excel文件的两种方式 简单分享一下Servlet通过解析Excel文件得到其中数据的两种方式 第一种:前端获取 思路:通过layui的第三方插件 layui.excel 解析ex ...

  4. 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 $ ...

  5. Spark读取Hive数据的两种方式与保存数据到HDFS

    Spark读取Hive数据的两种方式与保存数据到HDFS Spark读取Hive数据的方式主要有两种 1. 通过访问hive metastore的方式,这种方式通过访问hive的metastore元数 ...

  6. 向服务器端提交数据的两种方式

    朴素版:                                                                                                 ...

  7. ajax加载vue数据,详解使用Vue.Js结合Jquery Ajax加载数据的两种方式

    整理文档,搜刮出一个使用vue.js结合jquery ajax加载数据的两种方式的代码,稍微整理精简一下做下分享. 废话不多说,直接上代码 html代码 demo {{message }} 测试jqu ...

  8. Android获取IP地址的两种方式(准确版)

    原文:https://blog.csdn.net/sinat_16458039/article/details/50260589 最近看了好多网上获取IP地址的例子,发现好多都不完全准确,这里我写一下 ...

  9. MySQL 清空表数据的两种方式和区别

    在MySQL中删除数据有两种方式:truncate table 表名.delete from 表名. 它们在以下方面存在区别: 执行效率 truncate不扫描表,相当于重新创建了表,只保留了表的结构 ...

最新文章

  1. 雷电2接口_地表最强?代替电脑的所有接口,雷电3或有望一统接口江湖
  2. idea swagger生成接口文档_spring boot集成Swagger-UI接口文档
  3. MongoDB 征途
  4. 被关起来日子的流水帐
  5. 法定节假日违规组织培训,51talk被通报批评整改不到位
  6. 基于asp.net基层部队后勤管理系统的设计与实现
  7. Android中使用Iconfont图标制作自己的矢量图库
  8. 特教学校计算机课,特教学校引入编程课 为听障孩子打开智能之门
  9. linux测试upnp,UPnP linux新手入门
  10. Spring Cloud Gateway的断路器(CircuitBreaker)功能
  11. VMM物理内存、虚拟内存管理,偷页算法
  12. linux下安装MySQL5.7及遇到的问题总结
  13. oracle使用text类型,oracle数据库中text类型用什么类型表示
  14. 如何查看自己的公网ip
  15. 电视剧《猎毒人》观后感
  16. Unity 3D 创建 合适角度 圆环 内 五边形柱体 mesh
  17. 经典过桥问题的思路解析
  18. loadrunner入门教程(10)--代理录制
  19. CSS3实用效果大全
  20. Hystrix服务监控

热门文章

  1. java毕业设计橱柜定制系统Mybatis+系统+数据库+调试部署
  2. 榆熙教育:客户人群标签是什么,拼多多如何做好标签分类
  3. 兼容各大主流浏览器的常用CSS Hack汇总
  4. 企业微信加密消息体_加解密方案的详细说明
  5. linux下ping函数的源码,linux下ping命令的实现源码(转)
  6. 澳洲国立大学工程和计算机学院,2020年澳洲国立大学工程与计算机科学学院专业设置(课程设置)如何?难度大不大?...
  7. 小鬼学cocos2dX笔记01——创建精灵动画(一)
  8. 好看视频MAU翻2.3倍:日活2亿的百度App加持矩阵产品
  9. shiro中devtools:java.lang.ClassCastException: cn.model.User cannot be cast to cn.model.User
  10. FFmpeg文件转封装