iOS中網路請求的使用(GET請求與POST請求)

來源:互聯網
上載者:User

標籤: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請求)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.