ASIHTTPRequest檢測系統的proxy設定並自動將proxy用於request。從1.0.6版本開始,它還支援PAC檔案和要求授權的proxy。
預設情況下,ASIHTTPRequest將嘗試自動檢測proxy設定。當然,你可以看自己手動設定:
- // 手動設定Proxy 伺服器
- NSURL *url = [NSURL URLWithString:@"http://www.dreamingwish.com"];
- ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
- [request setProxyHost:@"192.168.0.1"];
- [request setProxyPort:3128];
-
- // 另一種方法, 使用代理配置指令檔
- // (最好使用本地pac檔案)
- [request setPACurl:[NSURL URLWithString:@"path/to/test.pac"]];
要求授權的proxy
在Mac OS上,ASIHTTPRequest可以自動檢測到要求授權的proxy的憑據前提是在系統設定中設定好)。在iOS上,ASIHTTPRequest則無法自動檢測出授權憑據,所以你要麼手動使用delegate來向你的controller或者使用者索取合適的憑據,要麼讓ASIAuthenticationDialog向使用者索取憑據。一旦獲得了一個有效proxy憑據,那麼該憑據將被儲存到keychian中前提是啟用useKeychainPersistence )並自動重用。
手動為proxy指定憑據
- NSURL *url = [NSURL URLWithString:@"http://www.dreamingwish.com"];
- ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
- [request setProxyHost:@"192.168.0.1"];
- [request setProxyPort:3128];
-
- //為要求授權的proxy設定username 和password
- [request setProxyUsername:@"bencopsey"];
- [request setProxyPassword:@"password"];
-
- // 對於NTLM proxy,還要設定 domain (NTLM proxy功能是未經測試的)
- [request setProxyDomain:@"la.la.land"];
使用delegate來提供proxy憑據
這個特性的工作原理和“使用delegate提供HTTP授權”一樣,只有一點不同:你的delegate要響應proxyAuthenticationNeededForRequest:函數。
使用內建的授權對話方塊僅適用於iOS)
這個特性歸功於1.0.8版本的新類ASIAuthenticationDialog 。用來向使用者索取憑據來授權webserver或者proxy。
如果你的delegate不響應proxyAuthenticationNeededForRequest:函數,那麼預設情況下,ASIHTTPRequest將會顯示一個對客戶來提示使用者輸入授權憑據。使用ASIHTTPRequest,開發人員不再需要寫額外的代碼來顯示授權對話方塊,因為預設情況下,ASIHTTPRequest就會顯示它。
使用同步request時proxy授權對話方塊不會顯示出來。
如果你不限使用proxy授權對話方塊,那麼你要麼實現proxyAuthenticationNeededForRequest:,要麼設定shouldPresentProxyAuthenticationDialog 為false此時你的程式將無法串連到proxy)。如果你要改變對話方塊的樣式,你得繼承ASIHTTPRequest類,重寫showProxyAuthenticationDialog 來顯示你自己的對話方塊或者ASIAuthenticationDialog 子類.