这是我正在处理的第一个应用程序。我有一个用于登录呼叫功能的api url。当我输入用户名,密码。它将生成一个客户ID。我需要保存即可,并且我必须在我的所有屏幕上使用该特定ID,直到用户退出。
但是当我正在做api呼叫登录时。它不起作用。请帮帮我。
这是我的参数传递:
{
"username" : "u@gmail.com",
"password" : "u123"
}
登录api调用后我的json输出:
{
"status": 1,
"message": "Login success.",
"CustomerDetails": {
"CustomerId": "1",
"CustomerName": "u",
"CustomerEmail": "u@gmail.com",
"CustomerMobile": "901",
"CustomerAddress": "#45, 7th main road."
}
}
在此我需要保存CustomerId
,我必须将CustomerId
用于我的所有屏幕。
我的api在登录按钮时调用功能:
func getcartdetaildata () {
let headers = [
"cache-control": "no-cache",
"postman-token": "4c933910-0da0-b199-257b-28fb0b5a89ec"
]
let jsonObj:Dictionary<String, Any> = [
"username" : "\(UsernameEmail)",
"password" : "\(Password)"
]
if (!JSONSerialization.isValidJSONObject(jsonObj)) {
print("is not a valid json object")
return
}
if let postData = try? JSONSerialization.data(withJSONObject: jsonObj, options: JSONSerialization.WritingOptions.prettyPrinted) {
let request = NSMutableURLRequest(url: NSURL(string: "http://Login.php")! as URL,
cachePolicy: .useProtocolCachePolicy,timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
///print(error)
} else {
print("123.......... ")
DispatchQueue.main.async(execute: {
if let json = (try? JSONSerialization.jsonObject(with: data!, options: [])) as? Dictionary<String,AnyObject>
{
print(json)
let status = json["status"] as? Int;
if(status == 1)
{
print("asdasdasx.......... ")
// let access_token = json["CustomerId"]
//print(access_token)
DispatchQueue.main.async(execute: {
//
//
// //Set logged in to true
// UserDefaults.standard.set(true, forKey: "ISLOGGEDIN")
//
// //Set access token
// UserDefaults.standard.setValue(access_token, forKey: "CustomerId")
//
// UserDefaults.standard.synchronize()
//
})
}
}
})
}
})
dataTask.resume()
}
}
请帮帮我。
由于
答案 0 :(得分:0)
func apicalling () {
let Username:NSString = EmailTextField.text! as NSString
let password:NSString = PasswordTextField.text! as NSString
let headers = [
"content-type": "application/json",
"cache-control": "no-cache",
"postman-token": "4c933910-0da0-b199-257b-28fb0b5a89ec"
]
let parameters = [
"username": "\(Username)",
"password": "\(password)"
]
do {
let postData = try JSONSerialization.data(withJSONObject: parameters, options :[])
let request = NSMutableURLRequest(url: NSURL(string: "http://Login.php")! as URL,cachePolicy: .useProtocolCachePolicy,timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
///print(error)
} else {
DispatchQueue.main.async(execute: {
if let json = (try? JSONSerialization.jsonObject(with: data!, options: [])) as? Dictionary<String,AnyObject>
{
let status = json["status"] as? Int;
if(status == 1)
{
print(json)
}
}
})
}
})
dataTask.resume()
} catch {
// print("JSON serialization failed: \(error)")
}
}
NSUserDefaults中保存数据的代码。
let userDefaults = NSUserDefaults.standardUserDefaults()
userDefaults.setValue(YOUR_VALUE, forKey: "PASSKEY")
userDefaults.synchronize() // don't forgot this line
从NSUserDefaults中重新获取数据
if let VARIABLE = userDefaults.valueForKey("PASSKEY") {
// do something here when a Data exists
}
else {
// no data exists
}