【发布时间】:2016-05-06 13:59:32
【问题描述】:
我的 UIWebView 有问题。我无法使用 Windows 身份验证打开网站...在 Safari 浏览器中出现一个弹出窗口,因此在 WebView 控件中什么也没发生。
有人可以帮我解决这个问题吗?
这是我的代码
class MainViewController: UIViewController, UIWebViewDelegate, MFMailComposeViewControllerDelegate {
@IBOutlet weak var webView: UIWebView!
override func viewDidLoad() {
super.viewDidLoad();
webView.delegate = self;
let url = NSURL (string: "http://test.raphaels.com/mobile/");
let requestObj = NSURLRequest(URL: url);
webView.loadRequest(requestObj);
}
}
这段代码在 iOS 模拟器(即 Xcode 上的 iPhone 模拟器/模拟器)上的非安全服务器(URL)上运行良好。但是当我使用上面的网址时(只能从内网访问)。它在浏览器中询问用户名/密码并在 iPhone 模拟器中停止。请帮助我,我如何提供用户名和密码。我在网上搜索并找到了很多示例,不幸的是没有一个是 swift 编程的。
我试图写一个失败的解决方案,所以下面是失败的代码
override func viewDidLoad() {
super.viewDidLoad();
webView.delegate = self;
let username = "username11";
let password = "password22";
let loginString = NSString(format: "%@:%@", username, password);
let loginData: NSData = loginString.dataUsingEncoding(NSUTF8StringEncoding)!;
let base64LoginString = loginData.base64EncodedStringWithOptions(nil);
// create the request
let url = NSURL (string: "http://test.raphaels.com/mobile/");
let request = NSMutableURLRequest(URL: url)
request.HTTPMethod = "POST"
request.setValue("Basic \(base64LoginString)", forHTTPHeaderField: "Authorization")
webView.loadRequest(request);
}
【问题讨论】:
-
您的意思是让网址中有两个 http 吗?此外,NSURL(string:_) 返回一个可选的 NSURL,您可能必须在使用它来生成 NSMutableURLRequest 之前将其解包。
-
两个 https ?它只是一个网址。你以前见过吗,当你浏览一些安全的 URL 时,会有一个用户名/密码 javascript 类型的警报,如果没有填写或填写不正确,则访问被拒绝并显示 401 错误代码。
-
当然。但是,我从未见过包含两个“http://”子字符串的 url。你的 let url = NSURL(string: "http://"+"http://...") //抱歉 stackoverflow 一直在对看起来像 url 的东西进行一些格式化
-
我怎样才能打开包装?我是 swift 的新手,iOS 都是。我用 Java 编写了一个应用程序,并使用现有的代码库指向我的 Web 应用程序。
-
哦,您的编译器是否警告您“可选类型 'NSURL 的值?'没有打开;你是不是要使用“!”或者 '?' " 在 NSMutableURLRequest 行上?