我有一個使用WebKit WebView的應用程序,並且希望將使用自定義URL協議加載到此WebView中的URL映射到不同的HTTP URL。例如,假設我加載:將自定義URL協議映射到HTTP(使用NSURLProtocol?)
定製://路徑/到/資源
我希望可以先內部實際負載:
http://something-else.com/path/to/resource
換句話說,自定義協議供應幾乎就像一個簡寫。但我不能使用-webView:resource:willSendRequest:redirectResponse:fromDataSource :,因爲我想讓WebKit真正相信這是有問題的URL,而不是簡單地從一個重定向到另一個。
到目前爲止,我一直在嘗試使用自定義的NSURLProtocol子類。然而,這比我第一次想到的要複雜得多,因爲至少在我的理解中,我將不得不自己在NSURLProtocol子類的startLoading方法中進行實際加載。我想要一種將工作交給現有HTTP協議加載器的方式,但我找不到一種簡單的方法來完成此操作。
有沒有人有這樣的建議,或者解決這個問題的替代方法?
謝謝!
這是否有使WebView認爲它在自定義協議URL的作用?如果我只是從該if塊中加載一個新URL,我感覺我會和以前一樣:有效地創建一個重定向。但也許我誤解了我應該從那裏加載一個新的URL的時尚。 – 2010-05-12 07:32:12
「這是否有使webview認爲它在自定義協議URL的作用?」 不,絕對不是。如果您的目標是將href.location設置爲一項,然後加載另一項,那麼此解決方案將無法將您帶到那裏。抱歉。在這種情況下,當檢測到自定義方案時,即使它被殺死 - 因此location.href永遠不會改變。 「有效地創建重定向」 它不同於重定向。在重定向中,第一個URL被加載,處理等。然後加載下一個URL。使用策略委託並調用[listener ignore]會完全殺死第一個URL負載。 – isaiah 2010-05-12 07:56:59