在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中的一个链接,这个委托方法被调用。 将NSURLRequestrequest.url传递给委托方法,并创build一个新的带有?apptype=native NSURLRequest ,并附加到request.url属性中。