我创建了一个UIWebView,其中我将一个参数添加到url:
let url = NSURL(string: "http://localhost:8888/?apptype=native")
let request = NSURLRequest(URL: url!)
WebView.loadRequest(request)
当我在UIWebView中加载第一页时,参数存在,我可以使用php获取它。
但是当我切换到另一个页面时,参数消失了,我无法在服务器端使用php从网址获取它。
所以我找到了这个委托方法:
func webView(WebViewNews: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
return true
}
但是,每当在UIWebView中加载新页面时,我如何附加参数?
问候和谢谢!
答案 0 :(得分:0)
您可以返回false,然后使用NSURLSession
(或NSURLConnection
)自行检索内容,然后通过调用其loadData:MIMEType:textEncodingName:baseURL:
方法将页面注入Web视图。
此方法仅适用于页面加载,不适用于页面加载的其他资源(CSS,JavaScript等)。
要获得更完整的方法,您可以编写自定义NSURLProtocol类。只要您在全局注册该协议,此方法应适用于UIWebView类。您可能必须在创建Web视图之前注册协议类。
在您的自定义协议中,当您被要求启动连接时,您首先会创建一个可变的请求副本,并以您想要修改它的任何方式对其进行修改。然后,通过调用setProperty:forKey:inRequest:以自定义方式标记请求,最后,使用NSURLConnection或NSURLSession重新发出请求。
在您的canInitWithRequest:方法中,检查请求是否已被标记,如果是,则返回NO,以便正常的HTTP / HTTPS协议类将处理请求。