修改 URL 在 UIWebView 中加载请求之前
Modify URL Before Loading Request in UIWebView
我使用 UIWebView
.
从我的 Web 应用程序创建了一个本机应用程序
我的网络应用程序是一个基本的 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)
}
当我在服务器端检查参数是否存在于第一页时,它工作正常,但是当我切换到其他页面(类别等)时,条件失败。
第二种解决方案:我尝试设置cookies:
@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,以便我可以在服务器端检索它们?
是否有任何其他解决方案或如何修改我现有的解决方案?
实施 UIWebViewDelegate
方法 webView:shouldStartLoadWithRequest:navigationType:
。
当用户点击 webview 中的 link 时,将调用此委托方法。将 NSURLRequest
的 request.url
传递给委托方法并创建一个新的 NSURLRequest
并在 request.url
属性.[=18 后附加 ?apptype=native
=]
我使用 UIWebView
.
我的网络应用程序是一个基本的 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)
}
当我在服务器端检查参数是否存在于第一页时,它工作正常,但是当我切换到其他页面(类别等)时,条件失败。
第二种解决方案:我尝试设置cookies:
@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,以便我可以在服务器端检索它们?
是否有任何其他解决方案或如何修改我现有的解决方案?
实施 UIWebViewDelegate
方法 webView:shouldStartLoadWithRequest:navigationType:
。
当用户点击 webview 中的 link 时,将调用此委托方法。将 NSURLRequest
的 request.url
传递给委托方法并创建一个新的 NSURLRequest
并在 request.url
属性.[=18 后附加 ?apptype=native
=]