2016-03-29 14 views
2

私はiOSアプリケーションでSignup/Login機能を実装しようとしています。 これは、単純なサーバー側のPHPスクリプトを書いただけで、値を返すかどうかを確認するためです。SwiftアプリケーションでサーバーPHPを解析できません

<?php 

if(isset($_POST["username"])){ 
$username = $_POST["username"]; 
$password = $_POST["password"]; 
if($username == "admin" && $password == "admin") 
{ 
$details; 
$details['success'] = $username; 
echo json_encode($details); 
} 
else{ 
echo "invalid credential"; 
} 
}; 
?> 

そしてここでは、ログイン画面のコードです::ここに は私のPHPコードである

let myUrl = NSURL(string: "http://localhost/app/index.php") 
    let request = NSMutableURLRequest(URL:myUrl!) 
    request.HTTPMethod = "POST" 
    request.addValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type") 
    request.addValue("application/json", forHTTPHeaderField: "Accept") 
    //print("\(usernameField.text!), \(passwordField.text!), \(emailField.text!)") 
    //let params = ["user":"\(usernameField.text!)","pass":"\(passwordField.text!)"] as NSDictionary 
    let bodyData = "username=\(usernameField.text)&password=\(passwordField.text)" 
    request.HTTPBody = bodyData.dataUsingEncoding(NSUTF8StringEncoding) 

    let task = NSURLSession.sharedSession().dataTaskWithRequest(request, completionHandler: { 
      data, response, error in 
      do { 
       let json = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? NSDictionary 
       print("json is : \(json!)") 
       if let parseJSON = json { 
        let firstNameValue = parseJSON["success"] as? String 
        print("Username: \(firstNameValue!)") 
       } 
      } catch { 
       print("errorrrrr: \(error)") 
      } 
      if error != nil { 
       print("error=\(error!)") 
       return 
      }   
      // You can print out response object 
      print("Response = \(response!)") 
      // Print out reponse body 
      let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding) 
      print("response Data = \(responseString!)") 


     }) 
     task.resume() 

} 

しかし、私は次のエラーを取得しています:

Error Domain=NSCocoaErrorDomain Code=3840 "JSON text did not start with array or object and option to allow fragments not set." UserInfo={NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set.} 

そして、私の応答データ"無効な資格情報"です。

答えて

4

あなたのPHPスクリプトは、Webサービス用に完成していません。それはjsonを返すことはありません。まず、Webサービスを完了する必要があります。私はPHPの男ではない。しかし、まだ、私は、スクリプトを改善しようとした:

<?php 
if(isset($_POST["username"])){ 
$username = $_POST["username"]; 
$password = $_POST["password"]; 
if($username == "admin" && $password == "admin") 
{ 
    $details; 
    $details['success'] = $username; 
    return json_encode($details); 
} 
else{ 
    return json_encode(array("response" => "invalid credential")); 
} 
}; 
?> 

更新:alamofireライブラリをitegrating後にWebサービスを打つために、以下のコードを使用します。

let parameters = ["username": usernameField.text! ,"password" : passwordField.text! ] 

Alamofire.request(.POST, "http://localhost/app/index.php", parameters: parameters) 
    .responseString { response in 
     print("Response String: \(response.result.value)") 
    } 
    .responseJSON { response in 
     print("Response JSON: \(response.result.value)") 
     //Handle the json response here 
     if let parseJSON = response.result.value { 
       let firstNameValue = parseJSON["success"] as? String 
       print("Username: \(firstNameValue!)") 
      } 
    } 
+0

おかげで、私はこの明日しようとすると、あなたが知っています。 –

+0

申し訳ありませんが、動作しませんでした。 –

+0

それはまだ同じエラーですか? –

関連する問題