IOS网络编程之生成与解析负载
来源:互联网 发布:淘宝网春秋妈妈装 编辑:程序博客网 时间:2024/06/02 01:10
负载:
在服务的请求响应事务中交换的数据。如在POST请求中,负载指请求体。
负载的数据格式:
(1)XML: 可扩展标记语言,用于编码和组织数据。XML文档包含标记和内容。 标记由标签、属性和元素组成。标签包括起始标签、结束标签、空元素标签(也叫自关闭标签)。属性指起始标签或结束标签中的键值对,提供了元素的附加信息。元素是标签、属性和内容的集合。包含起始标签与结束标签或只包含空元素标签,起始标签与结束标签之间的就是内容。内容可以包好标记以及其他元素,如下例:
<person> <firstName>Nathan</firstName> <lastName>Jones</lastName> <emailAddress primary='true'>email@domain.com</emailAddress> <noContact medium='email'/></person>
(2)JSON :JavaScript对象符号,用于交换结构化信息的轻量级数据格式。JSON支持的数据类型以及与之关联的格式规则:
- 数字:无双引号
- BOOL:无双引号,true/false
- 数组:[1,2,3,…]
- 对象:{“key”:”value”, ….}, NSDictionary
- Null:无双引号
如:
{ "person": { "firstName":"Nathan", "lastName":"Jones", "email":{ "emainAddress":"email@domain.com", "primary":true }, "noContact":"email" }}
(3)HTML:超文本标记语言,用于组织网页上的数据。HTML文档包含doctype定义(DTD)、元素、属性、数据类型与字符实体引用。与XML文档区别在于HTML文档用于预先定义好的标签和属性名的集合。
doctype位于html文档的第一行,告诉浏览器当前页面使用的是HTML规范的哪个版本。html5中可以自定义属性,这些属性以data-为前缀,并且不包含大写字符。自定义属性旨在存储不适合现有属性存储的特定于应用的数据。>
<!Document html> // 告诉文档使用HTML5编写<html> <head> <title>Person:Nathan Jones</title> </head> <body> <div id='firstName'>Nathan</div> <div id='lastName'>Jones</div> <div id='emailAddress' data-primary='true'>email@domain.com</div> <div id='noContact' data-medium='email'/> </body></html>
解析响应负载
- XML:解析XML需要理解两种解析方式。
(1)Simple API For XML (SAX):顺序解析XML的元素,一次处理一个元素。
(2)Document Object Model(DOM):将整个XML文档以可遍历的结点树的形式读取在内存中。通过NSXMLParser和libxml两种进行解析
- - **HTML** > 利用 libxml2.dylib进行解析- **JSON** > 通过NSJSONSerialization,配置解析方式的参数含义: >
- (1)NSJSONReadingAllowFragments:告诉解析器处理既不是NSArray又不是NSDictionary的顶层对象。可以处理{“user”:null}简单的JSON结构的转换;
- (2)NSJSONReadingMutableContainers:生成NSMutableArray和NSMutableDictionary对象;
- (3)NSJSONReadingMutableLeaves:生成NSMutableString对象。
“`
生成响应负载
XML
通过libxml/xmlwriter接口生成XML
JSON
通过NSJSONSerialization的dataWithJSONObject:options:error:与writeJSONObject:toStream:options:error:生成,在调用该方法之前,先调用isValidJSONObject:来验证尝试转换的对象是否可以转换成JSON,能转换成JSON的对象必须满足以下规则:
(1) 顶层对象必须是NSArray或NSDictionary
(2) 所有的对象必须是NSString、NSNumber、NSArray、NSDictionary或NSNull
(3) 所有的NSDictionary键必须是NSString
(2) NSNumber的值不能为NaN或无穷大配置解析方式的参数:
NSJSSONWritingPrettyPrinted,通过添加空白来生成更易读的JSON,不指定该选项则会生成尽可能紧凑的JSON。
- IOS网络编程之生成与解析负载
- iOS 开发 网络编程与通信之XML解析
- 网络编程之负载均衡
- iOS网络编程开发—JSON解析与XML解析
- iOS网络编程:网络交互数据格式解析之json
- 【读书笔记】iOS网络-解析响应负载
- iOS开发之网络编程:XML,JSon解析
- iOS开发之网络编程篇四:XML,JSon解析
- iOS开发之网络编程--AFNetwork_AFN3.X解析
- iOS之网络编程
- iOS开发之JSON格式数据的生成与解析
- iOS多线程与网络开发之解析json数据
- iOS多线程与网络开发之解析xml
- IOS 网络请求与解析
- 网络编程之Volley解析
- 网络编程之解析网页
- IOS编程 之 XML解析
- iOS网络编程之ASIHTTPRequest
- Python Flask Web框架(七)
- Android studio 点击运行总是进入Debug模式
- Node.js UDP服务器无法收到客户端消息
- JDK 7新增ForkJoinPool,简单实例
- 指标制定总结
- IOS网络编程之生成与解析负载
- java 数组扩容
- 解决安装MySQL之路
- SAP创建视图族以及代码,适合PL表
- 慕课网原来的免费路径网址,快收藏。
- 线程转换类Exchanger
- 事件模型兼容代码
- php 魔术函数总结
- Android开发-冷启动