2016-12-26 20 views
0

現在、サーバーと通信するためにHTTP POSTメソッドが必要なiOSアプリケーションで動作しています。正しいかどうユーザ名とパスワードを取得する成功ですが、例えば、文字列 として、サーバーが返す:Swift HTTP POSTログインの確認

正しいユーザ名とパスワードの場合:

<文字列>正しい< /文字列>

不正なユーザ名やパスワードの場合:不適切な

<文字列> 0現在のユーザー名とパスワードは、次のViewControllerに正しい行くしている場合は、しかし、現在のユーザ名やパスワードは、次に行くことなく、エラーメッセージ誤って表示された場合 :/文字列>

どのように私はのような検証を追加することができますViewController。

これは私が使用していますコードです:

import UIKit 


class ViewController: UIViewController { 
    @IBOutlet var passwordField: UITextField! 
    @IBOutlet var usernameField: UITextField! 


override func viewDidLoad() { 
     super.viewDidLoad() 

      } 

    @IBAction func LoginGetData(_ sender: Any) { 


     var request = URLRequest(url: URL(string: "http://mylinkinhere")!) 
     request.httpMethod = "POST" 
     let postString = "username=\(usernameField.text!)&password=\(passwordField.text!)" 
     request.httpBody = postString.data(using: .utf8) 
     let task = URLSession.shared.dataTask(with: request) { data, response, error in 
      guard let data = data, error == nil else { 
       print("error=\(error)") 
       return 
      } 

      let httpStatus = response as? HTTPURLResponse 
       print("statusCode should be 200, but is \(httpStatus!.statusCode)") 
       print("response = \(response)") 
       print(postString) 

      let responseString = String(data: data, encoding: .utf8) 
      print("responseString = \(responseString)") 

     } 
     task.resume() 
    } 
} 

はあなたに感謝します。

答えて

2

あなたのAPIレスポンスはapplication/xmlapplication/jsonはありませんが、containsを使用して確認することができ、この応答のためには、それが正しいか間違っていましょう。だから応答を得た後、このようにしてみてください。

let responseString = String(data: data, encoding: .utf8) 
print("responseString = \(responseString)") 

if (responseString?.contains("Incorrect")) { 
    DispatchQueue.main.async { 
     print("incorrect - try again") 
     let alert = UIAlertController(title: "Try Again", message: "Username or Password Incorrect", preferredStyle: UIAlertControllerStyle.alert)      
     alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: nil))           
     self.present(alert, animated: true, completion: nil) 
    } 
}     
else { 
    DispatchQueue.main.async { 
     print("correct good") 

     let storyboard = UIStoryboard(name: "Main", bundle: nil) 
     let controller = storyboard.instantiateViewController(withIdentifier: "correctone") 
     self.present(controller, animated: true, completion: nil) 
    } 
} 
+0

はい、詳細な回答が更新されます。 –

+0

@ AmdAl-Haddadようこそメイト:) –

+0

@ AmdAl-Haddadあなたの上記のコメントを取得しないでください、あなたが話している詳細を指定することはできますか? –

0

文字列変数の<string> Correct </string>の値を取得します。

レスポンス文字列を取得したときにこのコードを使用します。

はstr_Status = VALUEFROMstring

は今、

if self.Selected == "Correct" 
{ 
    self.performSegueWithIdentifier("YOUR_SEGUE_IDENTIFIER_IN_STORYBOARD", sender: self) 
} 
else 
{ 
let alert = UIAlertController(title: "", message: "UserName Password are incorrect.", preferredStyle: UIAlertControllerStyle.Alert) 

     if handler == nil 
     { 
      alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil)) 
     } 
     else 
     { 
      alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: handler)) 
     } 

     delegate.presentViewController(alert, animated: true, completion: nil) 

} 
0

応答をチェックし、同様に、それをユーザーに届けるその後、ユーザ名とその関連するパスワードが一致するか否かのデータを検証してサーバーapiを作成し、キーで作り付けで、適切なメッセージを持つすべてのポストへの応答を送信してください。 。

関連する問題