版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
網(wǎng)絡(luò)
NSURLConnectioniOS學(xué)院李明杰常用類NSURL:請求地址NSURLRequest:一個NSURLRequest對象就代表一個請求,它包含的信息有一個NSURL對象請求方法、請求頭、請求體請求超時…
…NSMutableURLRequest:NSURLRequest的子類NSURLConnection負責(zé)發(fā)送請求,建立客戶端和服務(wù)器的連接發(fā)送NSURLRequest的數(shù)據(jù)給服務(wù)器,并收集來自服務(wù)器的響應(yīng)數(shù)據(jù)NSURLConnection的使用步驟使用NSURLConnection發(fā)送請求的步驟很簡單創(chuàng)建一個NSURL對象,設(shè)置請求路徑傳入NSURL創(chuàng)建一個NSURLRequest對象,設(shè)置請求頭和請求體使用NSURLConnection發(fā)送NSURLRequestNSURLRequestNSURL請求頭請求體NSURLConnection服務(wù)器NSURLConnection發(fā)送請求NSURLConnection常見的發(fā)送請求方法有以下幾種同步請求+(NSData*)sendSynchronousRequest:(NSURLRequest*)requestreturningResponse:(NSURLResponse**)responseerror:(NSError**)error;異步請求:根據(jù)對服務(wù)器返回數(shù)據(jù)的處理方式的不同,又可以分為2種block回調(diào)+(void)sendAsynchronousRequest:(NSURLRequest*)request
queue:(NSOperationQueue*)queue
completionHandler:(void(^)(NSURLResponse*response,NSData*data,NSError*connectionError))handler;NSURLConnection發(fā)送請求代理-(id)initWithRequest:(NSURLRequest*)requestdelegate:(id)delegate;+(NSURLConnection*)connectionWithRequest:(NSURLRequest*)requestdelegate:(id)delegate;-(id)initWithRequest:(NSURLRequest*)requestdelegate:(id)delegatestartImmediately:(BOOL)startImmediately;在startImmediately
=
NO的情況下,需要調(diào)用start方法開始發(fā)送請求-(void)start;成為NSURLConnection的代理,最好遵守NSURLConnectionDataDelegate協(xié)議NSURLConnectionDelegateNSURLConnectionDataDelegate協(xié)議中的代理方法開始接收到服務(wù)器的響應(yīng)時調(diào)用-(void)connection:(NSURLConnection*)connectiondidReceiveResponse:(NSURLResponse*)response;接收到服務(wù)器返回的數(shù)據(jù)時調(diào)用(服務(wù)器返回的數(shù)據(jù)比較大時會調(diào)用多次)-(void)connection:(NSURLConnection*)connectiondidReceiveData:(NSData*)data;服務(wù)器返回的數(shù)據(jù)完全接收完畢后調(diào)用-(void)connectionDidFinishLoading:(NSURLConnection*)connection;請求出錯時調(diào)用(比如請求超時)-(void)connection:(NSURLConnection*)connectiondidFailWithError:(NSError*)error;NSMutableURLRequestNSMutableURLRequest是NSURLRequest的子類,常用方法有設(shè)置請求超時等待時間(超過這個時間就算超時,請求失敗)-(void)setTimeoutInterval:(NSTimeInterval)seconds;設(shè)置請求方法(比如GET和POST)-(void)setHTTPMethod:(NSString*)method;設(shè)置請求體-(void)setHTTPBody:(NSData*)data;設(shè)置請求頭-(void)setValue:(NSString*)valueforHTTPHeaderField:(NSString*)field;創(chuàng)建GET和POST請求創(chuàng)建GET請求NSString*urlStr=[@""stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];NSURL*url=[NSURLURLWithString:urlStr];NSMutableURLRequest*request=[NSMutableURLRequestrequestWithURL:url];創(chuàng)建POST請求NSString*urlStr=@"";NSURL*url=[NSURLURLWithString:urlStr];NSMutableURLRequest*request=[NSMutableURLRequestrequestWithURL:url];request.HTTPMethod=@"POST";//請求體NSString*bodyStr=@"username=123&pwd=123";request.HTTPBody=[bodyStrdataUsingEncoding:NSUTF8StringEncoding];發(fā)送JSON給服務(wù)器如何發(fā)送JSON給服務(wù)器一定要使用POST請求設(shè)置請求頭[requestsetValue:@"application/json"
forHTTPHeaderField:@"Content-Type"];設(shè)置JSON數(shù)據(jù)為請求體多值參數(shù)有時候一個參數(shù)名,可能會對應(yīng)多個值北京&place=河南&place=湖南服務(wù)器的place屬性是一個數(shù)組Charles什么是CharlesCharles是一款代理服務(wù)器軟件,可以用來攔截網(wǎng)絡(luò)請求利用Charles能得知大部分公司app的數(shù)據(jù)來源和數(shù)據(jù)格式下載地址:快速設(shè)置手機設(shè)置安裝Charles的電腦IP地址授權(quán)手機訪問提交用戶的隱私數(shù)據(jù)一定要使用POST請求提交用戶的隱私數(shù)據(jù)GET請求的所有參數(shù)都直接暴露在URL中請求的URL一般會記錄在服務(wù)器的訪問日志中服務(wù)器的訪問日志是黑客攻擊的重點對象之一用戶的隱私數(shù)據(jù)登錄密碼銀行賬號…
…數(shù)據(jù)安全僅僅用POST請求提交用戶的隱私數(shù)據(jù),還是不能完全解決安全問題可以利用軟件(比如Charles)設(shè)置代理服務(wù)器,攔截查看手機的請求數(shù)據(jù)因此:提交用戶的隱私數(shù)據(jù)時,一定不要明文提交,要加密處理后再提交常見的加密算法MD5
\
SHA
\
DES
\
3DES\RC2和RC4
\
RSA
\
IDEA
\
DSA
\
AES加密算法的選擇一般公司都會有一套自己的加密方案,按照公司接口文檔的規(guī)定去加密MD5什么是MD5全稱是MessageDigestAlgorithm5,譯為“消息摘要算法第5版”效果:對輸入信息生成唯一的128位散列值(32個字符)MD5的特點輸入兩個不同的明文不會得到相同的輸出值根據(jù)輸出值,不能得到原始的明文,即其過程不可逆MD5的應(yīng)用由于MD5加密算法具有較好的安全性,而且免費,因此該加密算法被廣泛使用主要運用在數(shù)字簽名、文件完整性驗證以及口令加密等方面MD5解密網(wǎng)站:提交隱私數(shù)據(jù)的安全過程–注冊服務(wù)器帳號:zhangsan密碼:123注冊username=zhangsanpwd=202CB962AC59075B964B07152D234B70數(shù)據(jù)庫username=zhangsanpwd=202CB962AC59075B964B07152D234B70提交隱私數(shù)據(jù)的安全過程–登錄服務(wù)器帳號:zhangsan密碼:123登錄username=zhangsanpwd=202CB962AC59075B964B07152D234B70數(shù)據(jù)庫username=zhangsanpwd=202CB962AC59075B964B07152D234B70結(jié)論用戶的隱私數(shù)據(jù),只有在用戶輸入那一刻是明文,其他情況都是密文處理登錄成功MD5改進現(xiàn)在的MD5已不再是絕對安全,對此,可以對MD5稍作改進,以增加解密的難度加鹽(Salt):在明文的固定位置插入隨機串,然后再進行MD5先加密,后亂序:先對明文進行MD5,然后對加密得到的MD5串的字符進行亂序…
…總之宗旨就是:黑客就算攻破了數(shù)據(jù)庫,也無法解密出正確的明文同一個URL的多次請求有時候,對同一個URL請求多次,返回的數(shù)據(jù)可能都是一樣的比如服務(wù)器上的某張圖片,無論下載多少次,返回的數(shù)據(jù)都是一樣的客戶端服務(wù)器請求N次返回一樣的數(shù)據(jù)上面的情況會造成以下問題用戶流量的浪費程序響應(yīng)速度不夠快思考:如何解決?緩存思路–第一次請求數(shù)據(jù)內(nèi)存緩存硬盤緩存為了提高程序的響應(yīng)速度,可以考慮使用緩存(內(nèi)存緩存\硬盤緩存)客戶端服務(wù)器請求檢測有無緩存檢測有無緩存第一次請求數(shù)據(jù)時內(nèi)存緩存中沒有數(shù)據(jù)硬盤緩存中沒有數(shù)據(jù)緩存思路–緩存數(shù)據(jù)的過程內(nèi)存緩存硬盤緩存客戶端服務(wù)器返回數(shù)據(jù)寫入硬盤(沙盒)使用數(shù)據(jù)當(dāng)服務(wù)器返回數(shù)據(jù)時,需要做以下步驟使用服務(wù)器的數(shù)據(jù)(比如解析、顯示)將服務(wù)器的數(shù)據(jù)緩存到硬盤(沙盒)此時緩存的情況是內(nèi)存緩存中有數(shù)據(jù)硬盤緩存中有數(shù)據(jù)緩存思路–再次請求如果程序并沒有被關(guān)閉,一直在運行內(nèi)存緩存中有數(shù)據(jù)硬盤緩存中有數(shù)據(jù)如果再次請求數(shù)據(jù),直接使用內(nèi)存緩存中的數(shù)據(jù)即可內(nèi)存緩存硬盤緩存客戶端服務(wù)器使用數(shù)據(jù)緩存思路–再次請求如果程序重新啟動內(nèi)存緩存已經(jīng)消失,沒有數(shù)據(jù)硬盤緩存依舊存在,還有數(shù)據(jù)內(nèi)存緩存硬盤緩存客戶端服務(wù)器使用數(shù)據(jù)讀取數(shù)據(jù)一旦從硬盤緩存中讀取數(shù)據(jù),內(nèi)存緩存中又有數(shù)據(jù)了緩存的實現(xiàn)一般只對GET請求進行緩存,不必對POST請求進行緩存GET請求一般用來查詢數(shù)據(jù)POST請求一般是發(fā)大量數(shù)據(jù)給服務(wù)器處理(變動性比較大)在iOS中,可以使用NSURLCache類緩存數(shù)據(jù)iOS
5之前:只支持內(nèi)存緩存iOS
5開始:同時支持內(nèi)存緩存和硬盤緩存NSURLCache了解緩存原理:一個NSURLRequest對應(yīng)一個NSCachedURLResponse緩存技術(shù):數(shù)據(jù)庫NSURLCacheNSURLCache的常見用法獲得全局緩存對象(沒必要手動創(chuàng)建)NSURLCache*cache=[NSURLCache
sharedURLCache];設(shè)置內(nèi)存緩存的最大容量(字節(jié)為單位,默認為512KB)-(void)setMemoryCapacity:(NSUInteger)memoryCapacity;設(shè)置硬盤緩存的最大容量(字節(jié)為單位,默認為10M)-(void)setDiskCapacity:(NSUInteger)diskCapacity;硬盤緩存的位置:沙盒/Library/CachesNSURLCache取得某個請求的緩存-(NSCachedURLResponse*)cachedResponseForRequest:(NSURLRequest*)request;清除某個請求的緩存-(void)removeCachedResponseForRequest:(NSURLRequest*)request;清除所有的緩存-(void)removeAllCachedResponses;緩存GET請求要想對某個GET請求進行數(shù)據(jù)緩存,非常簡單NSMutableURLRequest*request=[NSMutableURLRequest
requestWithURL:url];//設(shè)置緩存策略request.cachePolicy=NSURLRequestReturnCacheDataElseLoad;只要設(shè)置了緩存策略,系統(tǒng)會自動利用NSURLCache進行數(shù)據(jù)緩存緩存策略iOS對NSURLRequest提供了7種緩存策略:(實際上能用的只有3種)NSURLRequestUseProtocolCachePolicy
//默認的緩存策略(取決于協(xié)議)NSURLRequestReloadIgnoringLocalCacheData//忽略緩存,重新請求NSURLRequestReloadIgnoringLocalAndRemoteCacheData//未實現(xiàn)NSURLRequestReloadIgnoringCacheData=NSURLRequestReloadIgnoringLocalCacheData
//忽略緩存,重新請求NSURLRequestReturnCacheDataElseLoad//有緩存就用緩存,沒有緩存就重新請求NSURLRequestReturnCacheDataDontLoad//有緩存就用緩存,沒有緩存就不發(fā)請求,當(dāng)做請求出錯處理(用于離線模式)NSURLRequestReloadRevalidatingCacheData//未實現(xiàn)緩存的使用注意緩存看起來很美好,但需要謹慎使用如果請求某個URL的返回數(shù)據(jù)經(jīng)常更新:不能用緩存!比如股票、彩票數(shù)據(jù)一成不變:果斷用緩存偶爾更新:可以定期更改緩存策略或者清除緩存如果大量使用緩存,會越積越大,建議定期清除緩存檢測網(wǎng)絡(luò)狀態(tài)在網(wǎng)絡(luò)應(yīng)用中,需要對用戶設(shè)備的網(wǎng)絡(luò)狀態(tài)進行實時監(jiān)控,目的是讓用戶了解自己的網(wǎng)絡(luò)狀態(tài),防止一些誤會(比如怪應(yīng)用無能)根據(jù)用戶的網(wǎng)絡(luò)狀態(tài)進行智能處理,節(jié)省用戶流量,提高用戶體驗WIFI\3G網(wǎng)絡(luò):自動下載高清圖片低速網(wǎng)絡(luò):只下載縮略圖沒有網(wǎng)絡(luò):只顯示離線的緩存數(shù)據(jù)蘋果官方提供了一個叫Reachability的示例程序,便于開發(fā)者檢測網(wǎng)絡(luò)狀態(tài)
ReachabilityReachability的使用步驟添加框架SystemConfiguration.framework添加源代碼包含頭文件#import
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高效學(xué)習(xí)的時間管理技巧分享
- 校園文化對學(xué)校日常管理的影響研究
- 科技助力優(yōu)化小區(qū)超市的物流配送流程
- 智能生產(chǎn)與醫(yī)療設(shè)備行業(yè)的融合探索
- 2025年度大蒜種植與加工廢棄物資源化利用合同3篇
- 2025年度不銹鋼門批發(fā)與市場推廣合同4篇
- 二零二五版民品典當(dāng)借款合同解除條件約定4篇
- 二零二五年度出租車租賃與司機激勵計劃合同范本2篇
- 高效能實驗室內(nèi)網(wǎng)管理體系的構(gòu)建
- 2025年度創(chuàng)新型民間借款擔(dān)保人責(zé)任保險合同樣本3篇
- 射頻在疼痛治療中的應(yīng)用
- 和平精英電競賽事
- 四年級數(shù)學(xué)豎式計算100道文檔
- “新零售”模式下生鮮電商的營銷策略研究-以盒馬鮮生為例
- 項痹病辨證施護
- 職業(yè)安全健康工作總結(jié)(2篇)
- 懷化市數(shù)字經(jīng)濟產(chǎn)業(yè)發(fā)展概況及未來投資可行性研究報告
- 07FD02 防空地下室電氣設(shè)備安裝
- 教師高中化學(xué)大單元教學(xué)培訓(xùn)心得體會
- 彈簧分離問題經(jīng)典題目
- 部編版高中歷史中外歷史綱要(下)世界史導(dǎo)言課課件
評論
0/150
提交評論