【问题标题】:Alamofire POST dictionary with row data带有行数据的 Alamofire POST 字典
【发布时间】:2016-06-20 17:31:11
【问题描述】:

大家好,我目前正在使用 Swift 2.2 和 Alamofire,我正在使用 json 进行发布/表单请求。这是我当前的代码:

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)

            }

    }

}

但我需要将其更改为接受同一字典的原始正文请求。

【问题讨论】:

    标签: ios swift dictionary alamofire


    【解决方案1】:

    这是使用 Swift 2.2 的原始格式的发布请求:

    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()
    
    }
    

    【讨论】:

      猜你喜欢
      • 2018-05-07
      • 1970-01-01
      • 1970-01-01
      • 2019-04-08
      • 1970-01-01
      • 1970-01-01
      • 2020-09-18
      • 1970-01-01
      • 2015-03-31
      相关资源
      最近更新 更多