首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将页面从java类加载到webview swift 2中

将页面从java类加载到webview swift 2中
EN

Stack Overflow用户
提问于 2017-12-04 21:19:18
回答 0查看 121关注 0票数 0

我正在开发一个使用Xwebview的iPhone应用程序,它使我能够下载一个页面,然后与下载的页面上的javascript交互。一切正常,但如果internet连接中断,则会加载一个默认本地页面,通知用户没有internet连接。页面显示一个重试按钮,当按下该按钮时,将检查互联网连接:如果连接成功,应用程序将尝试再次连接到外部页面,并将页面加载到网页视图中。我不能这样做:代码下载页面(我可以在我的会话数据中看到这一点),但我无法将该页面加载回webview。

代码语言:javascript
复制
override func viewDidLoad() {
        super.viewDidLoad()
              login()
        }

    func login()
    {
        // *********** Get stored hashkey **************
        let hashcode = getHashcode()

        // ********** Check network connection *********
        let netConnection = Connection.isConnectedToNetwork()
        print("net connection: ", netConnection)

        if netConnection == true
        {
            if hashcode != "00000"
            {

                print("local key found", hashcode)
                // We dont have local key
                let webview = WKWebView(frame: view.frame, configuration: WKWebViewConfiguration())
                //webview.loadRequest(NSURLRequest(URL: NSURL(string: "about:blank")!))
                view.addSubview(webview)
                webview.loadPlugin(jsapi(), namespace: "jsapi")


                let url:NSURL = NSURL(string: serverLocation + onlineLoginApi)!
                let session = NSURLSession.sharedSession()
                let request = NSMutableURLRequest(URL: url)

                request.HTTPMethod = "POST"
                request.cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringCacheData

                let paramString = "/?username=username&password=password"
                request.HTTPBody = paramString.dataUsingEncoding(NSUTF8StringEncoding)

                let task = session.downloadTaskWithRequest(request) {
                    (
                    let location, let response, let error) in

                    guard let _:NSURL = location, let _:NSURLResponse = response  where error == nil else {
                        print("error")
                        return
                    }

                    let urlContents = try! NSString(contentsOfURL: location!, encoding: NSUTF8StringEncoding)

                    guard let _:NSString = urlContents else {
                        print("error")
                        return
                    }

                    print(urlContents)

                }

                task.resume()

                // you must tell webview to load response
                webview.loadRequest(request)

            }
            else{

                print("local key found", hashcode)
                // ********* Found local key go to site pass key over ************

                let webview = WKWebView(frame: view.frame, configuration: WKWebViewConfiguration())
                view.addSubview(webview)
                webview.loadPlugin(jsapi(), namespace: "jsapi")

                let req = NSMutableURLRequest(URL: NSURL(string:serverLocation + onlineLoginApi + "?hashcode=\(hashcode)")!)
                req.HTTPMethod = "POST"
                req.HTTPBody = "/?hashcode=\(hashcode)".dataUsingEncoding(NSUTF8StringEncoding)
                NSURLSession.sharedSession().dataTaskWithRequest(req)
                { data, response, error in
                    if error != nil
                    {
                        //Your HTTP request failed.
                        print(error!.localizedDescription)
                    } else {
                        //Your HTTP request succeeded
                        print(String(data: data!, encoding: NSUTF8StringEncoding))
                    }
                    }.resume()
                webview.loadRequest(req)

            }

        }
        else{

            // No connection to internet

            let webview = WKWebView(frame: view.frame, configuration: WKWebViewConfiguration())
            view.addSubview(webview)
            webview.loadPlugin(jsapi(), namespace: "jsapi")

            let root = NSBundle.mainBundle().resourceURL!
            let url = root.URLByAppendingPathComponent("/www/error-no-connection.html")
            webview.loadFileURL(url, allowingReadAccessToURL: root)
            print("No internet connection")

            }
    }
class jsapi: NSObject {


        // Reconnect button on interface
        func retryConnection()
        {
            print("Reconnect clicked")
            dispatch_async(dispatch_get_main_queue())
            {
            let netConnections = Connection.isConnectedToNetwork()

                if netConnections == true {
                let netalert = UIAlertView(title: "Internet on line", message: nil, delegate: nil, cancelButtonTitle: "OK")
                netalert.show()

                let url = self.serverLocation + self.onlineLoginApi
                let hashcode = ViewController().getHashcode()

                if(hashcode != "00000") {
                    let url = url + "?hashcode=\(hashcode)"
                    print("url: ", url)
                }

                   ViewController().loadPagelive(url)

                }


            else{
                let netalert = UIAlertView(title: "Internet off line", message: nil, delegate: nil, cancelButtonTitle: "OK")
                netalert.show()
                }
            }
            print("retryConnect end")
            }
        }
EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47634315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档