網(wǎng)絡(luò)編程二
一、AFNetworking第三方網(wǎng)絡(luò)框架
AFNetworking2.0使用簡單,對最新的iOS特性有很好的支持,對NSURL進行了封裝。
AFNetworking是對NSURLConnection網(wǎng)絡(luò)組件進行了封裝。但iOS7之后,AFNetworking對NSURLSession網(wǎng)絡(luò)組件進行封裝。
AFNetworking:
NSURLConnection核心的網(wǎng) 絡(luò)請求功能
NSURLSession針對iOS7新增 的后臺多任務(wù)
Reachablity用于檢測網(wǎng)絡(luò)狀況
Serizalization可序列化的
Request和Response對象封裝
Security針對SSL Pinning的封 裝,用于通訊安全
(1)AFHTTPSessionManager
AFHTTPSessionManager:用于管理NSURLSession對象、管理網(wǎng)絡(luò)請求、下載、上傳任務(wù)等操作
具體實現(xiàn)在UI學(xué)習(xí)---UI高級---08網(wǎng)絡(luò)編程二---代碼中的01和02
(2)AFHTTPRequestSerializer
客戶端提交給服務(wù)器的數(shù)據(jù)格式主要有:&拼接、JSON
AF封裝了相應(yīng)的類對每一種數(shù)據(jù)格式進行拼接
AFHTTPRequestSerializer:&拼接格式
AFJSONRequestSerializer:JSON數(shù)據(jù)格式
(3)AFURLResponseSerialization
服務(wù)器返回的數(shù)據(jù)格式主要有:JSON、XML
AF封裝了相應(yīng)的類對返回的數(shù)據(jù)格式解析
AFHTTPResponseSerializer(基類):不解析數(shù)據(jù)
AFJSONResponseSerializer:解析JSON數(shù)據(jù)格式
AFXMLParserResponseSerializer:解析XML數(shù)據(jù)格式
二、XML
A、XML簡單介紹
1.XML是什么:XML即可擴展標(biāo)記語言(eXtensible Markup Language)
2.XML作為一種數(shù)據(jù)格式,主要用于描述數(shù)據(jù),存儲數(shù)據(jù)
3.一個常見的XML數(shù)據(jù)一般由以下部分組成
文檔聲明
元素節(jié)點(Element)
屬性(Attribute)
4.XML解析:通過解析XML格式,提取XML所描述的數(shù)據(jù)
5.XML主要有兩種解析方式:DOM和SAX
DOM解析:讀入整個XML文檔并構(gòu)建一個駐留內(nèi)存的樹結(jié)構(gòu)(節(jié)點樹),通過遍歷樹結(jié)構(gòu)可以檢索任意XML節(jié)點,讀取它的屬性和值。
SAX解析:是基于事件通知的模式,一邊讀取XML文檔一邊處理,不必等整個文檔加載完之后才采取操作,一邊讀取節(jié)點,一邊處理節(jié)點
DOM解析適用于小數(shù)據(jù)量的XML,SAX解析適用于大數(shù)據(jù)量的XML
6.XML解析框架:
iOS SDK提供:NSXMLParser和libxml2兩個類庫
第三方框架:TBXML、TouchXML、KissXML、TinyXML和GDataXML
B、KissXML的使用
1.KissXML的解析方式是DOM解析、依賴于libxml框架、適合小量XML讀取
2.支持XPath查找節(jié)點、支持讀取、寫入XML
3.使用KissXML必須導(dǎo)入libxml2.2ylib框架
4.在Header Search Paths中添加此路徑:/usr/include/libxml2
C、KissXML寫XML
寫XML的學(xué)習(xí)內(nèi)容:
1.創(chuàng)建節(jié)點對象
2.為節(jié)點添加屬性
3.添加子節(jié)點
D、KissXML讀取XML
讀取XML有兩種方式:
1.遍歷每個樹節(jié)點
2.通過XPath語句,查找出指定的節(jié)點
E、XPath的介紹
1.XML是樹狀的結(jié)構(gòu),每個節(jié)點元素都有一個路徑位置,這個位置我們成為這個節(jié)點的節(jié)點路徑(XPath)
2.XPath描述了節(jié)點的所在位置,支持XPath看解析框架,可以通過此XPath查找出匹配此XPath的所有節(jié)點
3.XPath是XML的查詢語句
4.XPath語法:
(1)*可以匹配任意節(jié)點
NSString*xPath = @”/*/cd”;
(2)查找出任何層級下所有的cd節(jié)點
NSString*xPath = @"http://cd";
(3)查找出songs底下的cd中所有price元素
NSString*xPath = @"/songs/cd/price";
(4)查找price值大于10的所有cd元素
NSString *xPath =@"/songs/cd[price>10]";
**具體實現(xiàn)請看下面代碼**