2015-08-27 42 views
2

我使用UIWebView從我的Web應用程序創建了本機應用程序。在UIWebView中加載請求之前修改URL

我的web應用程序是一個基本的CMS,包含一些靜態頁面,一些類別頁面和一些詳細頁面。

現在我需要檢查請求是來自Web應用程序還是本機應用程序。

要做到這一點,我有兩個可能性:

解決方案一:修改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) 
} 

當我在服務器端檢查是否存在第1頁上的參數它的工作原理,但是當我切換到其他頁面(類別等)時,條件失敗。

解決方法二:我試圖設置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) 
} 

但我怎麼添加餅乾在這個例子中的響應,所以我可以在服務器端進行檢索?

有沒有其他解決方案,或者我該如何修改現有的解決方案?

回答

3

執行UIWebViewDelegate方法webView:shouldStartLoadWithRequest:navigationType:

當用戶點擊webview中的鏈接時,調用此委託方法。以NSURLRequestrequest.url傳遞給代理方法,並創建一個新的NSURLRequest?apptype=native附加到request.url屬性。

+0

我試過這個解決方案,但它不適合我。你們是怎麼做到的? –

+0

你可以爲此添加一個簡單的代碼示例嗎? – AllTheTime