GET & POST
- GET
- GET的語義是獲取指定URL的資源
- 將數據按照variable=value的形式,添加到action所指向的URL後面,並且兩者使用"?"連接,各變量之間使用"&"連接
- 貌似不安全,因爲在傳輸過程中,數據被放在請求的URL中
- 傳輸的數據量小,這主要是因爲受URL長度限制
- 示例:http://localhost//login.php?username=zhangsan&password=zhang
- 本地主機 資源名稱 變量名password,變量數值zhang
-
語義:從本地主機的login.php資源獲取(操作)指定用戶名和密碼的登錄情況
- POST
- POST的語義是向指定URL的資源添加數據
- 將數據放在數據體中,按照變量和值相對應的方式,傳遞到action所指向URL
- 所有數據對用戶來說不可見
- 可以傳輸大量數據,上傳文件只能使用Post
- 示例: http://localhost/login.php
- 本地主機 資源名稱
-
語義:向本地主機的login.php資源添加用戶名和密碼,並獲得登錄情況
提示:用戶名和密碼包裝在網絡請求的數據體中,在URL中不可見
在瀏覽器中判斷GET&POST請求
- 因爲POST請求會向服務器發送數據體,因此在刷新頁面時會出現提示窗口
- 而GET請求不會向服務器發送數據體,因此沒有提示
- 從請求的本質而言,GET請求要比POST請求更安全,效率也會更高
利用Firebug輕鬆查看Post請求的內容
iOS網絡發送網絡請求的步驟
- 實例化URL(網絡資源)
- 根據URL建立URLRequest(網絡請求)
- 默認爲GET請求
- 對於POST請求,需要創建請求的數據體
- 利用URLConnection發送網絡請求(建立連接)
- 獲得結果
- NSURLConnection提供了兩個靜態方法可以直接以同步或異步的方式向服務器發送網絡請求
- 同步請求:sendSynchronousRequest:returningResponse:error:
- 異步請求:sendAsynchronousRequest:queue: completionHandler:
網絡傳輸之二進制數據流
- 在網絡請求過程中,接收數據的過程實際上是通過NSURLConnectionDataDelegate來實現的,常用代理方法包括:
- 服務器開始返回數據,準備工作
- (void)connection:didReceiveResponse:
- 收到服務器返回的數據,本方法會被調用多次
- (void)connection:didReceiveData:
- 數據接收完畢,做數據的最後處理
- (void)connectionDidFinishLoading:
- 網絡連接錯誤
- (void)connection:didFailWithError:
使用代理實現關聯性較強的業務邏輯時
在今後的開發中,如果使用簡單的get/head請求,可以使用NSURLConnction異步方法
get 查/post 增/put 改/delete 刪/ head
數據加密——MD5
- Message Digest Algorithm MD5(中文名爲消息摘要算法第五版)爲計算機安全領域廣泛使用的一種散列函數,用以提供消息的完整性保護。該算法的文件號爲RFC 1321
- MD5用於確保信息傳輸完整一致。是計算機廣泛使用的雜湊算法之一(又譯摘要算法、哈希算法),主流編程語言普遍已有MD5實現
- MD5的典型應用是對一段字節串產生指紋,以防止被“篡改”。例如,可以對一個readme.txt生成一個MD5的值並記錄在案,如果其他人修改了文件中的任何內容,對該文件重新計算的MD5值會發生變化
- MD5還廣泛用於操作系統的登錄認證上,如Unix、各類BSD系統登錄密碼、數字簽名等諸多方面
- 不可逆
- 同樣的數據加密結果是一樣的?密碼上的一個忌諱
- 加點”鹽”私鑰
- http://www.cmd5.com