作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我使用 UIWebView
从我的网络应用创建了一个原生应用。
我的网络应用程序是一个基本的 CMS,其中包含一些静态页面、一些类别页面和一些详细信息页面。
现在我需要检查请求是来自网络应用程序还是 native 应用程序。
为此,我有两种可能性:
第一种解决方案:修改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:
.
当用户点击 web View 中的链接时,将调用此委托(delegate)方法。将 NSURLRequest
的 request.url
传递给委托(delegate)方法,并使用 ?apptype=native
创建一个新的 NSURLRequest
附加到 request.url
属性。
关于ios - 在 UIWebView 中加载请求之前修改 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32253997/
我是一名优秀的程序员,十分优秀!