swift - 连接 Swift 和 php 服务器

标签 swift swift2

<分区>

我正在尝试从 swift 发布到 php,然后将 json 编码的数据返回给 swift。

但是,print(task.response) 为零。我的link做了它应该做的,但我的应用程序仍然以零响应。知道为什么吗?

let request = NSMutableURLRequest(URL: NSURL(string: "https://www.flashkase.com/API/createAccount.php")!)
request.HTTPMethod = "POST"
let postString = "username=frogg222"
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { data, response, error in
    guard error == nil && data != nil else { // check for fundamental networking error
        print("error=\(error)")
        return
    }

    if let httpStatus = response as? NSHTTPURLResponse where httpStatus.statusCode != 200 { // check for http errors
        print("statusCode should be 200, but is \(httpStatus.statusCode)")
        print("response = \(response)")
    }

    let responseString = String(data: data!, encoding: NSUTF8StringEncoding)
    print("responseString = \(responseString)")
}
task.resume()
print(task.response)

还有我的 PHP 文件

<?php 
include($_SERVER["DOCUMENT_ROOT"] . "/inc/database.php");
$arr = [];

$arr[] = 'Reporting for duty';

if($_SERVER['REQUEST_METHOD'] == 'POST'){
    $arr[] = 'Post received';
    $arr[] = $_POST['username'];
}

echo json_encode($arr);
?>

更新:完成后如何查看数据?如果我取消对 sleep(3) 的注释,它将显示结果……但这显然不理想。

func postToServer(postURL: String, postString: String) {

    let request = NSMutableURLRequest(URL: NSURL(string: postURL)!)
    request.HTTPMethod = "POST"
    request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)

    let task = NSURLSession.sharedSession().dataTaskWithRequest(request){
        data, response, error in 

        print("\(data), \(response), \(error)")

    }
    task.resume()
    //sleep(3)
}


let sendURL: String = "https://www.flashkase.com/API/createAccount.php"
let sendData: String = "username=frogg222&email=fake123@gmail.com&password=fake1234"

postToServer(sendURL,postString: sendData)

最佳答案

dataTaskWithRequest 是一个异步操作。在任务开始后立即打印响应代码显然会打印 nil,因为它还没有时间获取值。完成处理程序已经有一个您可以使用的 response 对象,因此在您的完成处理程序中,调用 print(response) 来查看属性并尝试获取响应代码。

关于swift - 连接 Swift 和 php 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39562162/

相关文章:

arrays - 将字符串数组转换为图像数组

swift - 无法根据背景颜色快速禁用单元格

ios - 如何在 Swift 中删除 Realm 中的对象

ios - Swift:在为 UITextField 对象设置委托(delegate)时展开可选值时意外发现 nil

iOS 9 Swift 2 : horizontally scrollable views? Facebook 的 "suggested friends/groups"

swift - 从 2 个 UInt8 创建一个 UInt16

swift - 集合类型过滤器 : Swift compilation error : Tuple pattern cannot match values of non-tuple type

ios - 如何在 Swift 2 中模糊场景

swift - 声明仅在文件范围内有效(扩展名)

swift - 具有自动布局约束的 UITableViewCell 子类不正确的高度