2016-07-10 14 views
0

Von meiner Login-Ansicht in meinem iPhone app bekomme ich Benutzer Benutzername und Passwort, die ich an den Server senden möchte. Ich habe ein einfaches Skript gemacht, nur um zu überprüfen, ob meine Funktion zum Senden einer POST-Anfrage an den Server funktioniert. Ich habe keine Fehler, aber es scheint, dass mein Skript leer ist POST-Variablen. Hier ist meine Funktion für Parameter zu meinem PHP-Server-Skript zu senden:Swift POST-Anfrage nicht senden von Daten an Server

func postDataToURL() { 

    let json = [ "username" : "vanja", "password" : "dinamo", "iphone" : "1" ] 

    print (json) 

    do { 
      let jsonData = try NSJSONSerialization.dataWithJSONObject(json, options: .PrettyPrinted) 

      // create post request 
      let url = NSURL(string: "http://www.pnc.hr/rfid/login.php")! 
      let request = NSMutableURLRequest(URL: url) 
      request.HTTPMethod = "POST" 

      // insert json data to the request 
      request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type") 
      request.HTTPBody = jsonData 
      request.addValue("application/json", forHTTPHeaderField: "Content-Type") 
      request.addValue("application/json", forHTTPHeaderField: "Accept") 


      let task = NSURLSession.sharedSession().dataTaskWithRequest(request){ data, response, error in 
       if error != nil{ 
        print("Error 55 -> \(error)") 
        return 
       } 

       do { 
        let result = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? [String:AnyObject] 

        print("Result 34 -> \(result)") 

       } catch { 
        print("Error 43-> \(error)") 
       } 
      } 

      task.resume() 
     } 
     catch { 
      //handle error. Probably return or mark function as throws 
      print(error) 
      return 
     } 
} 

Hier ist mein PHP-Skript:

<?php 
if (isset($_POST['username'])) 
    $username = $_POST['username']; 
else $username = "nista"; 

if (isset($_POST['password'])) 
    $password = $_POST['password']; 
else $password = "nista"; 

if (isset($_POST['iphone'])) 
    $iphone = $_POST['iphone']; 
else $iphone = "nista"; 

$arr = array('username' => $username, 'password' => $password, 'loggedIn' => 1, 'token' => 'ldsakj832WE32', 'iphone' => $iphone); 
echo json_encode($arr); 

>

Das Problem ist, dass Skript nicht von bekommt meine? POST-Variablen

+0

für mich dieses Skript ohne irgendein Problem laufen.Sie müssen nur vertippte Header-Felder entfernen. // request.addValue ("application/json", forHTTPHeaderField: "Inhaltstyp") // request.addValue ("application/json", forHTTPHeaderField: "Accept") –

Antwort

0

Das Problem ist: von Swift habe ich JSON-Datei gesendet, nicht POST varaibles. Also bekomme ich keine Variablen von PHP mit $ _POST. Ich brauche die JSON-Datei und codiere es so:

$json = file_get_contents('php://input'); 
//echo $json shoulkd show the json string 

$array = json_decode($json, true); 
// var_dump($arr) should show the array structure 

$username = $array['username']; 
$password = $array['password']; 
$iphone = $array['iphone']; 
Verwandte Themen