我正在写这个问题,因为我很难理解如何使用Swift实现简单的基本身份验证登录。
我的应用的第一个屏幕是一个带有文本字段(用户名和密码)和登录按钮的简单表单。在我的LoginViewController.swift文件中,我将按钮链接到:
@IBAction func doLogin(sender : AnyObject) {
}
现在的探索是我不知道如何继续下去。我在MAMP中有一个本地服务器,其中有这个file.php查询数据库并且工作正常:
<?php
$deep="";
require_once($deep."class/config.php");
$sistema = new config($deep);
if( isset($_GET["username"]) && isset($_GET["password"]) ) {
$username=mysqli_real_escape_string($sistema->dbConn,$_GET["username"]);
$password=mysqli_real_escape_string($sistema->dbConn,$_GET["password"]);
$userL=$sistema->user->allAdmin("WHERE username='".$username."' AND password='".$password."' ");
echo json_encode($userL);
}
?>
那么如何对此文件执行GET请求?我想我需要创建一个包含用户数据的URL,如下所示:
http://localhost:8888/excogitoweb/loginM.php?username=lorenzo&password=lorenzo
然后我不知道该怎么做。如何执行此请求以检索该JSON内容?如何检查JSON内容以了解登录过程是否成功? 我在youtube上看了很多教程,整体this但是即使我复制他们显示的代码我也总是遇到编译错误......
答案 0 :(得分:1)
对于“普通”GET请求,您需要使用您的网址进行NSURLRequest ...就像这样:
if let requestURL: NSURL = NSURL(string: "http://localhost:8888/excogitoweb/loginM.php?username=lorenzo&password=lorenzo") as NSURL? {
let urlRequest: NSURLRequest = NSURLRequest(URL: requestURL)
let urlSession = NSURLSession.sharedSession().dataTaskWithRequest(urlRequest, completionHandler: { (data: NSData!, response: NSURLResponse!, error: NSError!) -> Void in
if let responseJSON: [String: String] = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.allZeros, error: nil) as? [String: String] {
///Here you can handle the responded JSON
}
})
urlSession.resume()
}
不要忘记,当你处理响应的JSON时,你处于后台任务...如果你想在那里做一些UI Stuff,你需要将它发送到mein队列
另外一个建议你做HTTP POST而不是HTTP GET这样的事情
<强>更新强>
if let responseJSON: [[String: String]] = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.allZeros, error: nil) as? [[String: String]] {
///Here you can handle the responded JSON
}