什么時候使用NSURLProtocol?
** 1、提供自定義的網絡響應請求**
無論你使用什么來制作,比如UIWebView,NSURLConnection 甚至第三方庫(比如AFNetworking, MKNetworkKit, 自定義的等,這些都是基于NSURLConnection的)。你可以弄個自定義的,既用于數據也用于元數據。你也許會愿意這樣做,如果你是用來進行測試 的話。
2、減少網絡請求,使用本地數據
有時候你可以會認為為程序提供某些需要的數據來進行網絡連接是沒必要的。NSURLProtocol可以使你的程序在本地緩存或者數據庫中進行數據檢索。
3、重定向網絡請求
你曾經望過可以將請求重定向到一個代理服務器——不經過用戶來允許而讓IOS程序定位?恩,這是可以的!NSURLProtocol 為你提供了你所想要的-控制請求。你可以設定你的程序攔截或者重定向它們到另一個服務器或者代理服務器,或者你任何想想連接的。這是絕對的控制!
4、改變用戶請求代理
在進行任何網絡請求前,你可以決定是否改變它的元數據或者數據。舉例來說,你可以改變用戶的代理。這對于服務器根據用戶代理而改變是很有用的。比如根據用戶的使用環境或者客戶端語言來返回不同的內容。
5、使用自定義網絡協議
你也行有自己的網絡協議(比如,一些建立于UDP基礎上的)。你可以在程序中實現它,或者你也可以選擇使用一些其它你喜歡的網絡協議庫。
- 自定義請求和響應
- 提供自定義的全局緩存支持
- 重定向網絡請求
- 提供HTTP Mocking(方便前期測試)
- 其他一些全局的網絡請求修改需求