2016-11-18 2 views
-1

Hallo Ich schreibe eine ios swift 3-Anwendung, um mit einer Website zu kommunizieren, die App nach einer Reihe von Dingen sollte einen Typ Wert von false oder true zurückgeben, aber es passiert nicht Sie kann mir sagen, wo ich falsch liege und wie ich den Fehler korrigieren kann!Lesen Rückgabewert PHP auf IOS-Anwendung

Wert zurück an swift: .... response = Optional ({URL: "http://....myurl.php"} .....

SWIFT CODE:

let myUrl = URL(string: "http://....myurl.php"); 

var request = URLRequest(url:myUrl!) 

request.httpMethod = "POST"// Compose a query string 

let postString = "username=James&password=Bond"; 

request.httpBody = postString.data(using: String.Encoding.utf8); 

let task = URLSession.shared.dataTask(with: request) { (data: Data?, response: URLResponse?, error: Error?) in 

    if error != nil 
    { 
     print("error=\(error)"); 
     // return false 
    } 

    print("response = \(response)") 

} 
task.resume() 

return 0; 

PHP CODE:

include 'user.php'; 

$user = new User(); 
$username= $_REQUEST["username"]; 
$password = $_REQUEST["password"]; 

if($user->login($username,$password)==true){ 
     echo json_encode("true"); 
} 

else{ 
    echo json_encode("false"); 
} 

ERROR BILD:

ERROR PICTURE

Antwort

1

Sie müssen in Daten betrachten und nicht Antwort. Und vielleicht sollten Sie Ihren Rückgabewert in Ihrem PHP-Code, wie dies beispielsweise einkapseln:

if($user->login($username,$password)==true){ 
    echo '{"success":true}'; 
}else{ 
    echo '{"success":false}'; 
} 

Und dann das Ergebnis in schnellen erhalten:

func login(request_completed:@escaping (_ succeded:Bool) ->()) { 
    let myUrl=URL(string: "http://....myurl.php"); 
    var request=URLRequest(url:myUrl!) 
    request.httpMethod="POST" 
    let postString = "username=James&password=Bond"; 
    request.httpBody = postString.data(using: String.Encoding.utf8); 

    let task=URLSession.shared.dataTask(with: request, completionHandler: { data, response, error in 
     guard data != nil else { 
      print("no data found") 
      request_completed(false) 
      return 
     } 

     do{ 
      if let jsonData=try JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.mutableContainers) as? NSDictionary{ 
       print(jsonData) 
       let success=jsonData.value(forKey: "success") as! Bool 
       if success{ 
        print("login succeded") 
        request_completed(true) 
        return 
       }else{ 
        print("login failed") 
        request_completed(false) 
        return 
       } 
      }else{ 
       print("could not parse json") 
       request_completed(false) 
      } 
     }catch{ 
      print("request failed") 
      request_completed(false) 
     } 
    }) 
    task.resume() 
} 
+0

danke, aber wo ich Ihren SWIFT-Code einfügen ? @Marie Dm –

+0

@RikiDev Ich bearbeitete meine Antwort mit mehr Details –

+0

, wenn ich Ihren Code Code auf meinem Xcode starten, habe ich Syntaxfehler! @Marie Dm –