標籤:style blog http color io os ar 使用 for
GET&POST
GET和POST是兩種最常用的與伺服器進行互動的HTTP方法
GET
語意是擷取指定URL的資源。
將資料按照variable=value的形式,添加到action所指向的URL後面,並且兩者只用“?”串連,各變數之間使用“&”串連。
貌似不安全,因為在傳輸過程中,資料被放在請求的URL中。
傳輸的資料量小,這主要是因為受URL長度限制。
POST
POST的語意說向指定URL的資源添加資料。
將資料放在資料體中,按照變數和值相對應的方式,傳遞到action所指向URL。
所有資料對使用者來說不可見。
可以傳輸大量資料,上傳檔案只能使用POST。
GET請求樣本
http://localhost//login.php?username=zhangsan&password = zhang
localhost:本地主機
ogin.php:資源名稱
語意:從本地主機的login.php資源擷取(操作)指定使用者名稱和密碼的登陸情況。
POST請求樣本
http://localhost/login.php
localhost:本地主機
/login.php:資源名稱
語義:向本地主機的login.php資源添加使用者名稱和密碼,並獲得登陸情況。
提示:使用者名稱和密碼封裝在網路請求的資料體中,在URL中不可見.
在瀏覽器中判斷GET&POST請求
因為POST請求會向伺服器發送資料體,因此在重新整理頁面時會出現提示視窗。
而GET請求不會向伺服器發送資料體,因此沒有提示。
從請求的本質而言,GET請求要比POST請求更安全,效率更高。
利用Firebug輕鬆查看POST請求的內容
開發網路應用時,用瀏覽器跟蹤URL的返回結果是開發的重要輔助手段。
iOS網路發送請求的步驟
1.執行個體化URL(網路資源)
2.根據URL建立URLRequest(網路請求)
預設為GET請求
對於POST請求,需要建立請求的資料體。
3.利用URLConnection發送網路請求(建立串連)。
4.獲得結果
NSURLConnection提供了兩個靜態方法可以直接同步處理或非同步方式向伺服器發送網路請求。
同步請求
sendSynchronousRequest:returningResponse:error:
非同步請求:
sendAsynchronousRequest:queue:completionHandler:
網路傳輸之位元據流
在網路請求過程中,接受資料的過程實際上是通過
NSURLConnectionDataDelegate來實現的,常用代理方法包括:
伺服器開始返回資料,準備工作- (void)connection:didReceiveResponse:收到伺服器返回的資料(本方法會被調用多次)- (void)connection:didReceiveData:資料接收完畢,做資料的最後處理- (void)connectionDidFinishLoading:網路連接錯誤- (void)connection:didFailWithError:讓NSURLConnectionDataDelegate非同步執行[connection setDelegateQueue:[NSOperationQueue alloc] init]
使用代理的優缺點
缺點:
代理方法多,比較分散。
要處理一個請求,需要在很多地方編寫代碼。
不利於邏輯實現、代碼編寫、調試、維護以及擴充。
尤其當存在多個請求會變得非常麻煩。
優點:
下載較大檔案時,代理的作用將無可替代。
將資料寫入檔案
//1.開啟檔案 NSFileHandle *fp = [NSFileHandle fileHandleForWritingAtPath:self.downloadPath];//2.如果檔案不存在if (fp == nil){//直接將資料寫入檔案 [data writeToFile:self.down.downloadPath atomically:YES]; }else{//如果檔案已經存在,移動到檔案末尾 [fp seekToEndOfFile];//追加資料檔案 [fp writeData:data];//關閉檔案 [fp closeFile];}
iOS中網路請求的使用(GET請求與POST請求)