gpt4 book ai didi

ios - 在 UIWebView 中加载请求之前修改 URL

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:00:05 25 4
gpt4 key购买 nike

我使用 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)方法。将 NSURLRequestrequest.url 传递给委托(delegate)方法,并使用 ?apptype=native 创建一个新的 NSURLRequest附加到 request.url 属性。

关于ios - 在 UIWebView 中加载请求之前修改 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32253997/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com