2015-08-27 2 views
2

Я создал собственное приложение из своего веб-приложения, используя UIWebView.Изменить URL-адрес перед загрузкой запроса в UIWebView

My webapp - это базовая CMS с некоторыми статическими страницами, страницами некоторых категорий и некоторыми подробными страницами.

Теперь мне нужно проверить, приходит ли запрос из веб-приложения или собственного приложения.

Для этого у меня есть две возможности:

Первое решение: Изменить 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) 
} 

Когда я проверяю на стороне сервера, если параметр существует на первой странице он работает, но когда я переключаюсь на другие страницы (категории и т. д.), условие терпит неудачу.

Второе решение: Я пытался установить печенье:

@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

Внедрение метода UIWebViewDelegatewebView:shouldStartLoadWithRequest:navigationType:.

Когда пользователь удаляет ссылку в webview, вызывается этот метод делегата. Возьмите request.url из NSURLRequest, переданный в метод делегата, и создайте новый NSURLRequest с ?apptype=native, присоединенный к объекту request.url.

+0

Я пробовал это решение, но это не сработало для меня. Как вы, ребята, это сделали? –

+0

Не могли бы вы добавить простой пример кода? – AllTheTime

Смежные вопросы