ログインページを作成しています。このページでは、ユーザーがusernameパスワードを入力してからデータがAPIに送信され、入力されたデータが正しい場合は成功します。結果が成功であるならば、私はこのフォームserverinによって返されたユーザーのユーザーキーを取得する必要があります。POST jsonからデータを取得する方法
{
"STATUS_DESC": "Success",
"STATUS_CODE": 1,
"email": "[email protected]",
"api_token": "Mqbraok1zsdasdasd4j3m"
}
を今私は、このAPIトークンを格納する必要があります。私はこの機能をしようとしていますが、そのは動作していない。このため -
@IBAction func signInBtnPressed(_ sender: Any) {
let email : String! = self.usernameField.text
let password : String! = self.passwordField.text
var request = URLRequest(url: URL(string: "\(URL_BASE)\(AUTH)\(LOGIN)")!)
request.httpMethod = "POST"
let postString = "email=\(email!)&&password=\(password!)"
request.httpBody = postString.data(using: .utf8)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data, error == nil else { // check for fundamental networking error
print("error=\(String(describing: error))")
print("cant run")
return
}
if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 { // check for http errors
print("statusCode should be 200, but is \(httpStatus.statusCode)")
print("response = \(String(describing: response))")
print("\(email)")
print("\(password)")
}
else {
let responseString = String(data: data, encoding: .utf8)
print("responseString = \(String(describing: responseString))")
print("\(URL_BASE)\(AUTH)\(LOGIN)/?\(postString)")
Alamofire.request("\(URL_BASE)\(AUTH)\(LOGIN)/?\(postString)" , method : .post).responseJSON { response in
let result = response.result
if let dict = result.value as? Dictionary<String,AnyObject>
{
print(dict)
let userTOKEN = dict["api_token"] as! String
print(userTOKEN)
}
}
}
}
task.resume()
}
やって何の間違いメートルを教えて、どのように私はそれを修正することができますしてください。..
コードでこれを渡す場所を教えてください –
答えを編集しました。 UserDefaultsにapi_tokenを格納するコードを追加しました。このコードをデータタスクの応答終了にします。 –
let task = URLSession.shared.dataTask(with:request){データのレスポンス、{//ここにコードを入れてください} –