【问题标题】:Swift - Get response from web (webview, safari, etc)Swift - 从网络获取响应(webview、safari 等)
【发布时间】:2019-01-08 18:08:41
【问题描述】:

我想在我的应用程序中打开一个网址并进行登录。之后,它会重定向到某个地方,它会给我一个响应(200 或 500)。 我希望得到回复。

有可能吗?我已经看到有几个选项:webview、safariviewcontroller 使用 SafariServices 甚至 SFAuthenticationSession(但它已被弃用,新的​​是 iOS 12...)

你有什么推荐的?

最诚挚的问候!!

【问题讨论】:

  • 多解释一下你想要实现的打开网址不是什么大问题
  • 是的,打开网址不是问题。在 webview 中得到响应是。至少对我来说。这就是我寻求帮助的原因:P
  • 您在项目中尝试过一些代码吗?
  • 这是一个非常基本的代码。我只尝试打开一个网址。但我没有看到任何代表的任何方法来获得该响应。你知道吗?
  • 然后显示基本代码...如果可以的话我一定会尽力提供帮助:)

标签: swift ios9


【解决方案1】:

您可以使用 WKWebView 及其委托函数来归档此类行为。

【讨论】:

  • 谢谢阿舒托斯
  • 看到 uiwebview 已被弃用是正确的。但你仍然可以使用它并且它非常有用。
【解决方案2】:

如果您使用 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. 
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-04
    • 2021-03-28
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 2020-07-26
    • 2017-06-24
    相关资源
    最近更新 更多