Swift:如何使用NSURLSession查询外部数据库?

时间:2015-08-25 15:31:50

标签: php mysql json swift

我正在写这个问题,因为我很难理解如何使用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但是即使我复制他们显示的代码我也总是遇到编译错误......

1 个答案:

答案 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
            }