我正在尝试在我的iOS应用程序上登录/注册以工作。除了 Swift 2.0 之外,我还使用 mySQL 和 PHP。出于某种原因,当我尝试将HTTP POST发送到PHP脚本时,我不断收到错误:"无法读取数据,因为它的格式不正确。
我正在使用 MAMP 作为 mySQL 服务器。
let request = NSMutableURLRequest(URL: NSURL.fileURLWithPath("/Users/robin/Programming/xcode/Projects/Quix/php_scripts/userRegister.php"))
request.HTTPMethod = "POST"
let postString = "email='(userEmail)&password='(userPassword)"
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)
print(postString)
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { data, response, error in
if (error != nil) {
print("error='(error)")
}
do {
if let parseJSON = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? NSDictionary {
let resultValue = parseJSON["status"] as? String
print("result: '(resultValue)")
var isUserRegistered:Bool = false
if (resultValue == "Success") { isUserRegistered = true }
var messageToDisplay:String = parseJSON["message"] as! String!
if (!isUserRegistered) {
messageToDisplay = parseJSON["message"] as! String!
}
dispatch_async(dispatch_get_main_queue(), {
let myAlert = UIAlertController(title: "Alert", message: messageToDisplay, preferredStyle: UIAlertControllerStyle.Alert)
let okAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.Default) { action in
self.dismissViewControllerAnimated(true, completion: nil)
}
myAlert.addAction(okAction)
self.presentViewController(myAlert, animated: true, completion: nil)
});
}
} catch let error as NSError {
print(error.localizedDescription)
}
}
task.resume()
在我的数据库中,我有表格"用户"和参数id(auto_increment),电子邮件和密码。我也在为mySQL使用端口:3306。MAMP 的标准 IP 是 127.0.0.1,我应该使用 IP:127.0.0.1 还是本地主机:3306?
您正在使用带有NSURLSession
请求的文件 URL。应使用https://
或http://
请求。 NSURLSession
用于发出网络请求,而不是本地文件系统请求。因此,如果您在 iOS 模拟器上运行它,您可以使用 http://localhost/...
.但是,在设备上运行它时,必须为其提供一个主机名,该主机名将解析为运行 MAMP 的计算机。
顺便说一下,如果您使用 http
,您可能需要添加 https://stackoverflow.com/a/31254874/1271826 中所述的NSExceptionDomains
条目。