Friday, 3 May 2019

JSON POST approach iOS


@IBAction func onClickLoginBtn(_ sender: UIButton) {
        
        let networkReachability = Reachability.forInternetConnection()
        let networkStatus:Int = (networkReachability?.currentReachabilityStatus())!.rawValue
        print(networkStatus)
        if networkStatus == NotReachable.rawValue {
            let msg = SharedClass.sharedInstance.noNetMsg
//            SharedClass.sharedInstance.alertWindow(title: "", message: msg)
            self.showAlert(title: "", msg: msg)
        } else {
            
            SharedClass.sharedInstance.activityIndicator(view: self.view)//Play spinner
            
            var url = SharedClass.sharedInstance.url
            url = url.replacingOccurrences(of: "****", with: "login")
            //        print(url)
            let ver = SharedClass.sharedInstance.ver
            let deviceID = UserDefaults.standard.string(forKey: "deviceID")!//E22E6278-0412-4C2F-9B00-A05AF621A5C6   SE
            
            let systemVersion = UIDevice.current.systemVersion
            let model:String = UIDevice.current.model
            
            let height = UIScreen.main.bounds.height
            let width = UIScreen.main.bounds.width
            
            let language = NSLocale.preferredLanguages[0]
            
            let emailTrimmedString:String = (emailAddressTF.text?.trimmingCharacters(in: .whitespaces))!
            
            let passwordTrimmedString:String = (passwordTF.text?.trimmingCharacters(in: .whitespaces))!
            
            if emailTrimmedString == "" {
                SharedClass.sharedInstance.stopActivityIndicator() //Stop spinner
//                SharedClass.sharedInstance.alertWindow(title: "", message: "Please enter username")
                self.showAlert(title: "", msg: "Please enter username")
            }
//            else if emailTrimmedString != "" {
//                if SharedClass.sharedInstance.isValidEmail(email:emailTrimmedString) == false {
//                    SharedClass.sharedInstance.stopActivityIndicator() //Stop spinner
//                    SharedClass.sharedInstance.alertWindow(title: "", message: "Please enter valid email")
//                } else {
                
                   else if passwordTrimmedString == "" {
                        SharedClass.sharedInstance.stopActivityIndicator() //Stop spinner
//                        SharedClass.sharedInstance.alertWindow(title: "", message: "Please enter password")
                self.showAlert(title: "", msg: "Please enter password")
                    } else {
                
                //Set user details for crashlytics
//                Crashlytics.sharedInstance().setUserEmail(emailTrimmedString)
//                Crashlytics.sharedInstance().setUserIdentifier("\(model)")
                Crashlytics.sharedInstance().setUserName("LoginID : \(emailTrimmedString)")
                
//                //Test crash
//                Crashlytics.sharedInstance().crash()
                
                //and_ver,model,manufacture,screendensity,
                //language,nativeplatform,height_width
                        let parameters = "imei=\(deviceID)&ver=\(ver)"
                        print("Parameters : \(parameters)")
                        var request = URLRequest(url: URL(string: url)!)
                        
                        request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
                        request.httpMethod = "POST"
                        
                        print("URL : \(request)")
                        
                        request.httpBody = parameters.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
                            SharedClass.sharedInstance.stopActivityIndicator() //Stop spinner
                            print("error=\(String(describing: error))")
//                            SharedClass.sharedInstance.alertWindow(title: "", message: "\(String(describing: error!.localizedDescription))")
                            self.showAlert(title: "", msg: "\(String(describing: error!.localizedDescription))")
                            return
                            }
                            
                            SharedClass.sharedInstance.stopActivityIndicator() //Stop spinner
                            
//                            if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode == 500 {
////                                SharedClass.sharedInstance.alertWindow(title: "", message: "Server Error")
//                                self.showAlert(title: "", msg: "Server Error")
//                                print("Error : \(httpStatus.statusCode)")
//                            } else
                            
                            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("Error : \(error?.localizedDescription ?? "Error")")
                                self.showAlert(title: "", msg: "\(error?.localizedDescription ?? "Error")")
                            }
                            
                             //If Response is in String formate
                             let responseString = String(data: data, encoding: .utf8)
                             let dictionary = data
                             print("dictionary = \(dictionary)")
                             print("responseString = \(String(describing: responseString!))")
                            
                            do {
                                let response = try JSONSerialization.jsonObject(with: data, options: .allowFragments) as? [String: AnyObject]
//                                print(response!)
                                
                                let res = response!["resp"] as! Array<Dictionary<String, Any>>
                                let status =  res[0]["status"] as! String
//                                print(status)
                                if status == "SUCCESS" {
                                    let session = res[0]["lml"] as! String
                                    let userName = res[0]["Username"] as! String
//                                    print(userName)
                                    UserDefaults.standard.set(session, forKey: "session")
                                    UserDefaults.standard.set(userName, forKey: "userName")
                                    DispatchQueue.main.async {
                                        let cldbvc = self.storyboard?.instantiateViewController(withIdentifier: "CLDBVC")
                                        self.navigationController?.pushViewController(cldbvc!, animated: false)
                                    }
                                    
                                } else {
                                    let message = res[0]["message"] as! String
                                    //Call alert function
//                                    SharedClass.sharedInstance.alertWindow(title: "", message: message)
                                    self.showAlert(title: "", msg: message)
                                }
                                
                            } catch let error as NSError {
                                print(error)
                                print(error.localizedDescription)
                            }
                        }
                        
                        task.resume()
                        
                    }
//                }
//            }
        }

    }

No comments:

Post a Comment

Difference between == and ===

Difference between == and === https://stackoverflow.com/questions/24002819/difference-between-and == operator checks if their ...