2016-06-20 32 views
0

嗨,大家好我目前使用Swift 2.2和Alamofire,我正在做一個使用json的post/form請求。這是我目前的代碼:Alamofire POST字典與行數據

func authenticateUserWithValues(passCode : String, userID : String, completion: (result: Bool, user : User?, message : String) -> Void) { 

    let urlString = NSString(format:"%@%@", kBaseURL, kCheckAuthenticationCodeURL) as String 

    let parameters: [String: String] = [ "code" : passCode, 
             "user_id": userID, 
             "application_type" : "2"] 


    Alamofire.request(.POST, urlString, parameters: parameters, encoding: .JSON) 
     .responseJSON { (response) in 

      switch response.result { 
      case .Failure(let error): 
       print(error) 
       if (error.code == -1009) { 
        completion(result: false, user: nil, message : kString_No_Internet_Connection) 
       }else{ 
        completion(result: false, user: nil, message: kString_Unexpected_Error_Occured) 
       } 
      case .Success(let responseObject): 

       let response = responseObject as? [String:String] 

       var status : String = "" 
       var message : String = "" 

       if(response!["status"] != nil){ 
        status = response!["status"]! 
       } 

       if(response!["message"] != nil){ 
        message = response!["message"]! 
       } 

       if (status == "OK"){ 

        let user : User = RealmManager().addUser(response!) 
        completion(result: true, user: user, message: message) 

       }else{ 

        completion(result: false, user: nil, message: message) 

       } 

       print(responseObject) 

      } 

    } 

} 

Bu我需要將其更改爲接受同一個詞典的原始請求。

回答

0

下面是使用夫特2.2以原始格式的POST請求:

func authenticateUserWithValues(passCode : String, userID : String, completion: (result: Bool, user : User?, message : String) -> Void) { 

    let urlString = NSString(format:"%@%@", kBaseURL, kCheckAuthenticationCodeURL) as String 

    let url:NSURL = NSURL(string: urlString)! 
    let session = NSURLSession.sharedSession() 

    let request = NSMutableURLRequest(URL: url) 
    request.HTTPMethod = "POST" 
    request.cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringCacheData 


    let paramString = "{\"code\" : \"\(passCode)\", \"user_id\" : \"\(userID)\", \"application_type\" : \"2\"}" 
    request.HTTPBody = paramString.dataUsingEncoding(NSUTF8StringEncoding) 

    let task = session.dataTaskWithRequest(request) { 
     (
     let data, let response, let error) in 

     guard let _:NSData = data, let _:NSURLResponse = response where error == nil else { 
      if (error!.code == -1009) { 
       completion(result: false, user: nil, message : kString_No_Internet_Connection) 
      }else{ 
       completion(result: false, user: nil, message: kString_Unexpected_Error_Occured) 
      } 
      return 
     } 

     do { 

      let json = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as! [String: AnyObject] 


      var status : String = "" 
      var message : String = "" 

      if(json["status"] != nil){ 
       status = json["status"]! as! String 
      } 

      if(json["message"] != nil){ 
       message = json["message"]! as! String 
      } 

      if (status == "OK"){ 
       RealmManager().removerAllUsers() 
       RealmManager().addUser(json) 
       let user : User = RealmManager().getCurrentUser()! 
       completion(result: true, user: user, message: message) 

      }else{ 

       completion(result: false, user: nil, message: message) 

      } 


     } catch let error as NSError { 
      completion(result: false, user: nil, message: error.localizedDescription) 
     } 

    } 

    task.resume() 

}