Swift - 从网络(webview、safari 等)获取响应
Swift - Get response from web (webview, safari, etc)
我想在我的应用程序中打开 url 并进行登录。之后,它会重定向到某个地方并给我一个响应(200 或 500)。 我想得到那个回复。
可能吗?我看到有几个选项:webview、使用 SafariServices 的 safariviewcontroller 甚至 SFAuthenticationSession(但它已被弃用,新的是 iOS 12...)
你推荐什么?
最诚挚的问候!
您可以使用 WKWebView 及其委托函数来归档此类行为。
如果您正在使用 UIWebview,请使用 JavaScript 技术在该 Web 视图中加载数据。像这样
public func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
if let requestUrl = request.url, requestUrl.absoluteString.hasPrefix("check with your url prefix") {
let absoluteStr = requestUrl.absoluteString.replacingOccurrences(of: "use to make url", with: "")
if let absoluteUrl = URL(string: absoluteStr) {
// do what you want with your url now.
}
}
}
UIWebView 的完成和错误委托
public func webViewDidFinishLoad(_ webView: UIWebView) {
if !webView.isLoading {
//webview loading complete
}
}
public func webView(_ webView: UIWebView, didFailLoadWithError error: Error)
{
// Call failure callback except for the error of WebKitErrorDomain
if ((error as NSError).domain != webKitErrorDomain) {
// delegate error where do you want.
}
}
我想在我的应用程序中打开 url 并进行登录。之后,它会重定向到某个地方并给我一个响应(200 或 500)。 我想得到那个回复。
可能吗?我看到有几个选项:webview、使用 SafariServices 的 safariviewcontroller 甚至 SFAuthenticationSession(但它已被弃用,新的是 iOS 12...)
你推荐什么?
最诚挚的问候!
您可以使用 WKWebView 及其委托函数来归档此类行为。
如果您正在使用 UIWebview,请使用 JavaScript 技术在该 Web 视图中加载数据。像这样
public func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
if let requestUrl = request.url, requestUrl.absoluteString.hasPrefix("check with your url prefix") {
let absoluteStr = requestUrl.absoluteString.replacingOccurrences(of: "use to make url", with: "")
if let absoluteUrl = URL(string: absoluteStr) {
// do what you want with your url now.
}
}
}
UIWebView 的完成和错误委托
public func webViewDidFinishLoad(_ webView: UIWebView) {
if !webView.isLoading {
//webview loading complete
}
}
public func webView(_ webView: UIWebView, didFailLoadWithError error: Error)
{
// Call failure callback except for the error of WebKitErrorDomain
if ((error as NSError).domain != webKitErrorDomain) {
// delegate error where do you want.
}
}