在UIWebView中加载请求之前修改URL
我使用UIWebView
从我的Web应用程序创build了一个本机应用程序。
我的web应用程序是一个基本的CMS,有一些静态页面,一些类别页面和一些详细页面。
现在我需要检查请求来自Web应用程序还是本机应用程序。
要做到这一点,我有两种可能性:
第一个解决scheme:修改URL并检查服务器端的URL:
@IBOutlet var WebView: UIWebView! override func viewDidLoad() { super.viewDidLoad() loadWebPage() } func loadWebPage() { let url = NSURL(string: "http://localhost:8888?apptype=native") let request = NSURLRequest(URL: url!) WebView.loadRequest(request) }
当我检查服务器端的参数是否存在于第一页上,但是当我切换到其他页面(类别等)时,条件失败。
第二个解决scheme:我试图设置cookie:
@IBOutlet var WebView: UIWebView! override func viewDidLoad() { super.viewDidLoad() loadWebPage() } func loadWebPage() { let url = NSURL(string: "http://localhost:8888") let request = NSURLRequest(URL: url!) var cookies = NSHTTPCookieStorage.sharedHTTPCookieStorage().cookies as! [NSHTTPCookie] var reqCookies:[AnyObject] = [] for aCookie in cookies { reqCookies += [aCookie] } var headers = NSHTTPCookie.requestHeaderFieldsWithCookies(reqCookies) WebView.loadRequest(request) }
但是,如何在响应中的这个例子中添加cookie,以便我可以在服务器端检索它们?
有没有其他解决scheme,或者我如何修改现有的解决scheme?
实现UIWebViewDelegate
方法webView:shouldStartLoadWithRequest:navigationType:
当用户点击webview中的一个链接,这个委托方法被调用。 将NSURLRequest
的request.url
传递给委托方法,并创build一个新的带有?apptype=native
NSURLRequest
,并附加到request.url
属性中。