我正在研究需要僅使用我信任的服務器(基於SSL握手)而不是所有Apple認可的服務器的Web視圖。帶有服務器信任身份驗證挑戰的UIWebView
有沒有辦法攔截UIWebView連接,所以我可以控制請求身份驗證?
當我使用UIWebView方法loadRequest:沒有辦法獲取SSL挑戰(因爲它不是UIWebViewDelegate協議的一部分)。
另一種方法是獲取UIWebView即將發送的請求(使用委託回調webView:shouldStartLoadWithRequest:navigationType :),告訴UIWebView不要加載它,並使用NSURLConnection發送請求(使用委託方法對於SSL握手邏輯)。並在連接完成時,將接收到的數據加載到UIWebView中(使用加載方法loadData:MIMEType:textEncodingName:baseURL :)。此解決方法適用於簡單的網站,但複雜的網站(JS,CSS ...)可能無法正常工作。
謝謝!
我還發現堆棧溢出一個相關的問題 - http://stackoverflow.com/questions/1769888/how-to-display-the-authentication-challenge-in-uiwebview - 的解決方案之一提供了一個「專業「但是這個和許多相關問題的免費解決方案。我還沒有測試過他的代碼。 – 2011-01-26 12:38:20