Swift - UIWebView baseURL 导致黑屏
Swift - UIWebView baseURL resulting in blank screen
我需要在我的应用程序中显示网络浏览器。我无法使用 SFSafariViewController,因为我需要能够使用 NTLM 进行身份验证,所以我目前正在使用 Alamofire 下载 data
,然后在 UIWebView 中显示它。
我已经让 UIWebView 通过 .loadHTMLString()
显示 HTML,但是图像、CSS 和 Javascript 文件没有加载。我尝试将 baseURL
设置为网站根目录,但是,当我这样做时,UIWebView
中没有任何负载,将其留空,控制台中没有任何内容或错误。
Alamofire.request(.GET, "https://dev-moss.stpaulscatholiccollege.co.uk/sites/Students/default.aspx").authenticate(usingCredential: credential)
.response { request, response, data, error in
dispatch_async(dispatch_get_main_queue(), { () -> Void in
// check for errors or bad responsecode
if (error == nil) && (response?.statusCode == 200) {
// load the website
let gatewayString = "\(NSString(data: data!, encoding: NSUTF8StringEncoding))"
self.gatewayWebView.loadHTMLString(String(NSString(data: data!, encoding: NSUTF8StringEncoding)!), baseURL: nil)
print(gatewayString)
}
else {
print("There was an error loading the website.")
}
})
}
即使将 baseURL
设置为 NSURL(string: "https://dev-moss.stpaulscatholiccollege.co.uk/")
或 NSURL(string: "https://dev-moss.stpaulscatholiccollege.co.uk")
,gatewayString
的 print
仍然会将网站吐出到控制台。
您的代码无法正常工作,因为基数 URL 不是 https://dev-moss.stpaulscatholiccollege.co.uk/
,而是 https://dev-moss.stpaulscatholiccollege.co.uk/sites/Students/default.aspx
。尝试一下,它应该可以工作。
编辑:
它看起来不起作用,因为 https://dev-moss.stpaulscatholiccollege.co.uk/sites/Students/default.aspx
使用 HTTP 基本身份验证,您没有提供凭据(UIWebView 对资源的请求与您通过 Alamofire 发出的资源请求分开,不包括您的凭据。)参见 How to do authentication in UIWebView properly?
我需要在我的应用程序中显示网络浏览器。我无法使用 SFSafariViewController,因为我需要能够使用 NTLM 进行身份验证,所以我目前正在使用 Alamofire 下载 data
,然后在 UIWebView 中显示它。
我已经让 UIWebView 通过 .loadHTMLString()
显示 HTML,但是图像、CSS 和 Javascript 文件没有加载。我尝试将 baseURL
设置为网站根目录,但是,当我这样做时,UIWebView
中没有任何负载,将其留空,控制台中没有任何内容或错误。
Alamofire.request(.GET, "https://dev-moss.stpaulscatholiccollege.co.uk/sites/Students/default.aspx").authenticate(usingCredential: credential)
.response { request, response, data, error in
dispatch_async(dispatch_get_main_queue(), { () -> Void in
// check for errors or bad responsecode
if (error == nil) && (response?.statusCode == 200) {
// load the website
let gatewayString = "\(NSString(data: data!, encoding: NSUTF8StringEncoding))"
self.gatewayWebView.loadHTMLString(String(NSString(data: data!, encoding: NSUTF8StringEncoding)!), baseURL: nil)
print(gatewayString)
}
else {
print("There was an error loading the website.")
}
})
}
即使将 baseURL
设置为 NSURL(string: "https://dev-moss.stpaulscatholiccollege.co.uk/")
或 NSURL(string: "https://dev-moss.stpaulscatholiccollege.co.uk")
,gatewayString
的 print
仍然会将网站吐出到控制台。
您的代码无法正常工作,因为基数 URL 不是 https://dev-moss.stpaulscatholiccollege.co.uk/
,而是 https://dev-moss.stpaulscatholiccollege.co.uk/sites/Students/default.aspx
。尝试一下,它应该可以工作。
编辑:
它看起来不起作用,因为 https://dev-moss.stpaulscatholiccollege.co.uk/sites/Students/default.aspx
使用 HTTP 基本身份验证,您没有提供凭据(UIWebView 对资源的请求与您通过 Alamofire 发出的资源请求分开,不包括您的凭据。)参见 How to do authentication in UIWebView properly?