간단한 iOS 사용자 시스템 용 웹 서비스를 만들고 있습니다. PHP는 완벽하게 쿼리하지만 iOS가 제대로 작동하지 않습니다. 데이터가 수신되지 않습니다. 어떻게해야합니까? 연결 클래스는 다음과 같습니다.iOS 연결에서 데이터를 반환하지 않습니다.
import Foundation
class Connection: NSObject {
var data: NSMutableData = NSMutableData()
func login(username: String, password: String) {
var url: NSURL = NSURL(string: "localhost/getusers.php?username=" + username + "&password=" + password)!
var request: NSURLRequest = NSURLRequest(URL: url)
var conn: NSURLConnection = NSURLConnection(request: request, delegate: self, startImmediately: true)!
}
func connection(didReceiveResponse: NSURLConnection!, didReceiveResponse response: NSURLResponse!) {
println("didReceiveResponse")
}
func connection(connection: NSURLConnection!, didReceiveData conData: NSData!) {
self.data.appendData(conData)
}
func connectionDidFinishLoading(connection: NSURLConnection!) {
println(self.data)
}
deinit {
println("deiniting")
}
}
여기가 어디에서 호출 되는지요.
@IBAction func attemptLogin(sender: UIButton) {
if(usernameTextField.text == "" || passwordTextField.text == "") {
var alert = UIAlertController(title: "Error", message: "Invalid Credentials", preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "Close", style: UIAlertActionStyle.Default, handler: nil))
self.presentViewController(alert, animated: true, completion: nil)
var connection: Connection = Connection()
connection.login(usernameTextField.text, password: passwordTextField.text)
}
}
마지막으로는, 여기에 PHP 서비스입니다 :
error_reporting(E_ALL);
ini_set('display errors', 1);
$username = 'root';
$password = 'root';
try {
$DBH = new PDO('mysql:host=localhost; dbname=login_test', $username, $password);
$DBH->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$recievedUsername = $_GET['username'];
$recievedPassword = $_GET['password'];
$data = array($recievedUsername, $recievedPassword);
$STH = $DBH->prepare("SELECT id, first_name, last_name FROM `users` WHERE `username` = ? AND `password` = ?");
$STH->execute($data);
$row = $STH->fetch(PDO::FETCH_ASSOC);
echo json_encode($row);
} catch(PDOException $e) {
echo $e->getMessage();
}
'NSURLConnectionDelegate'이 드문 오리 입력 대리인이 - 당신이 필요하지 않도록 매개 변수는 그냥 AnyObject' '로 입력한다 당신의 델리게이트 메소드가 호출되기 위해서는 * 적합성을 선언 할 필요가있다. –
테스트를 거쳤습니다. 모두 실행됩니다. – Jeffrey