【问题标题】:How to make HTTP Post request with JSON body in Swift如何在 Swift 中使用 JSON 正文发出 HTTP Post 请求
【发布时间】:2015-11-03 10:30:06
【问题描述】:

我正在尝试使用 JSON 正文发出 HTTP 发布请求:

如何能够将 NSdictionnary 添加到 HTTP 请求正文。

这是我的代码,它似乎无法正常工作。

var entry1 = Response(IdQuestion: 6510,IdProposition: 10,Time: 30)
var entry2 = Response(IdQuestion: 8284,IdProposition: 10,Time: 30)
Responses.append(entry1)
Responses.append(entry2)

let list = Responses.map { $0.asDictionary }

let json = ["List":list,"IdSurvey":"102","IdUser":"iOSclient","UserInformation":"iOSClient"]


let data : NSData = NSKeyedArchiver.archivedDataWithRootObject(json)


NSJSONSerialization.isValidJSONObject(json)

let myURL = NSURL(string: "http://www.myserver.com")!
let request = NSMutableURLRequest(URL: myURL)
request.HTTPMethod = "POST"


 request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
    request.setValue("application/json", forHTTPHeaderField: "Accept")


request.HTTPBody = data
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
    data, response, error in
    println(response)
    // Your completion handler code here
}
task.resume()

【问题讨论】:

    标签: json swift http post


    【解决方案1】:

    试试这个,

    // prepare json data
    let json: [String: Any] = ["title": "ABC",
                               "dict": ["1":"First", "2":"Second"]]
    
    let jsonData = try? JSONSerialization.data(withJSONObject: json)
    
    // create post request
    let url = URL(string: "http://httpbin.org/post")!
    var request = URLRequest(url: url)
    request.httpMethod = "POST"
    
    // insert json data to the request
    request.httpBody = jsonData
    
    let task = URLSession.shared.dataTask(with: request) { data, response, error in
        guard let data = data, error == nil else {
            print(error?.localizedDescription ?? "No data")
            return
        }
        let responseJSON = try? JSONSerialization.jsonObject(with: data, options: [])
        if let responseJSON = responseJSON as? [String: Any] {
            print(responseJSON)
        }
    }
    
    task.resume()
    

    或者试试方便的方式Alamofire

    【讨论】:

    • 非常漂亮。添加了最新 Swift 语法的版本(似乎每周都在变化)
    • @JoeBlow - 请发布您的替代方案作为新答案。完全不同,无法对此进行编辑。
    • @JoeBlow - 我不确定社区对此是否达成共识,所以我再次回滚了编辑并在 Meta.SO 上询问了这个问题:meta.stackoverflow.com/questions/339024/…
    • 对我来说添加这个有帮助:request.setValue("\(jsonData.length)", forHTTPHeaderField: "Content-Length")request.setValue("application/json", forHTTPHeaderField: "Content-Type")Ref
    • 这很危险,除非您还正确设置了 content-type 标头:request.addValue("application/json", forHTTPHeaderField: "Content-Type")。否则,它会执行表单的类型。超级普通的 ExpressJS + bodyParser 设置只是有时会得到不正确的结果,具体取决于内容。所以这会滋生无声的失败。
    【解决方案2】:

    Swift 4 和 5

    HTTP POST request 在 Swift 4 中使用 URLSession API

    func postRequest(username: String, password: String, completion: @escaping ([String: Any]?, Error?) -> Void) {
    
        //declare parameter as a dictionary which contains string as key and value combination.
        let parameters = ["name": username, "password": password]
    
        //create the url with NSURL
        let url = URL(string: "https://www.myserver.com/api/login")!
    
        //create the session object
        let session = URLSession.shared
    
        //now create the Request object using the url object
        var request = URLRequest(url: url)
        request.httpMethod = "POST" //set http method as POST
    
        do {
            request.httpBody = try JSONSerialization.data(withJSONObject: parameters, options: .prettyPrinted) // pass dictionary to data object and set it as request body
        } catch let error {
            print(error.localizedDescription)
            completion(nil, error)
        }
    
        //HTTP Headers
        request.addValue("application/json", forHTTPHeaderField: "Content-Type")
        request.addValue("application/json", forHTTPHeaderField: "Accept")
    
        //create dataTask using the session object to send data to the server
        let task = session.dataTask(with: request, completionHandler: { data, response, error in
    
            guard error == nil else {
                completion(nil, error)
                return
            }
    
            guard let data = data else {
                completion(nil, NSError(domain: "dataNilError", code: -100001, userInfo: nil))
                return
            }
    
            do {
                //create json object from data
                guard let json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as? [String: Any] else {
                    completion(nil, NSError(domain: "invalidJSONTypeError", code: -100009, userInfo: nil))
                    return
                }
                print(json)
                completion(json, nil)
            } catch let error {
                print(error.localizedDescription)
                completion(nil, error)
            }
        })
    
        task.resume()
    }
    
    @objc func submitAction(_ sender: UIButton) {
        //call postRequest with username and password parameters
        postRequest(username: "username", password: "password") { (result, error) in
        if let result = result {
            print("success: \(result)")
        } else if let error = error {
            print("error: \(error.localizedDescription)")
        }
    }
    

    使用 Alamofire:

    let parameters = ["name": "username", "password": "password123"]
    Alamofire.request("https://www.myserver.com/api/login", method: .post, parameters: parameters, encoding: URLEncoding.httpBody)
    

    【讨论】:

    • 一直在找这个“URLEncoding.httpBody”,谢谢
    【解决方案3】:

    Swift 中的 HTTP Post 捕获错误

    let json = [ Activity.KEY_IDSUBJECT : activity.idSubject, Activity.KEY_RECORDMODE : "3", Activity.KEY_LOCATION_LONGITUDE : "0",Activity.KEY_LOCATION_LATITUDE : "0", Activity.KEY_CHECKIN : String(activity.dateCheckIn), Activity.KEY_CHECKOUT : String(activity.dateCheckOut) ]
    
    do {
        let jsonData = try NSJSONSerialization.dataWithJSONObject(json, options: .PrettyPrinted)
    
        // create post request
        let url = NSURL(string: "https://...appspot.com/_ah/api/activityendpoint/v1/activity")!
        let request = NSMutableURLRequest(URL: url)
        request.HTTPMethod = "POST"
    
        // insert json data to the request
        request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type")
        request.HTTPBody = jsonData
    
    
        let task = NSURLSession.sharedSession().dataTaskWithRequest(request){ data, response, error in
            if error != nil{
                print("Error -> \(error)")
                return
            }
    
            do {
                let result = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? [String:AnyObject]
    
                print("Result -> \(result)")
    
            } catch {
                print("Error -> \(error)")
            }
        }
    
        task.resume()
        return task
    } catch {
        print(error)
    }
    

    【讨论】:

    • 是异步发送的请求
    • @Logan 文档说 dataTaskWithRequest 提供了“一个简单的可取消异步接口来接收数据”。所以我会假设这个调用已经是异步的,没有 dispatch_async
    【解决方案4】:

    SWIFT 5 人在这里:

    let json: [String: Any] = ["key": "value"]
    
            let jsonData = try? JSONSerialization.data(withJSONObject: json)
    
            // create post request
            let url = URL(string: "http://localhost:1337/postrequest/addData")! //PUT Your URL
            var request = URLRequest(url: url)
            request.httpMethod = "POST"
            request.setValue("\(String(describing: jsonData?.count))", forHTTPHeaderField: "Content-Length")
            request.setValue("application/json", forHTTPHeaderField: "Content-Type")
            // insert json data to the request
            request.httpBody = jsonData
    
            let task = URLSession.shared.dataTask(with: request) { data, response, error in
                guard let data = data, error == nil else {
                    print(error?.localizedDescription ?? "No data")
                    return
                }
                let responseJSON = try? JSONSerialization.jsonObject(with: data, options: [])
                if let responseJSON = responseJSON as? [String: Any] {
                    print(responseJSON) //Code after Successfull POST Request
                }
            }
    
            task.resume()
    

    【讨论】:

    • 正确答案。这对我来说是以复制粘贴的方式工作的。
    【解决方案5】:

    以下 Swift 5 Playground 代码显示了使用 JSONSerializationURLSession 解决问题的可能方法:

    import UIKit
    import PlaygroundSupport
    
    PlaygroundPage.current.needsIndefiniteExecution = true
    
    let url = URL(string: "http://localhost:8080/new")!
    let jsonDict = ["firstName": "Jane", "lastName": "Doe"]
    let jsonData = try! JSONSerialization.data(withJSONObject: jsonDict, options: [])
    
    var request = URLRequest(url: url)
    request.httpMethod = "post"
    request.setValue("application/json", forHTTPHeaderField: "Content-Type")
    request.httpBody = jsonData
    
    let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
        if let error = error {
            print("error:", error)
            return
        }
    
        do {
            guard let data = data else { return }
            guard let json = try JSONSerialization.jsonObject(with: data, options: []) as? [String: AnyObject] else { return }
            print("json:", json)
        } catch {
            print("error:", error)
        }
    }
    
    task.resume()
    

    【讨论】:

    • 将“application/json”指定为 ContentType 非常重要。否则,请求将按照通常的 HTTP 形式执行。很好的答案。
    【解决方案6】:
    let url = URL(string: "url")!
    var request = URLRequest(url: url)
    request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
    request.setValue("application/json", forHTTPHeaderField: "Accept")
    
    request.httpMethod = "POST"
    
    
    
    let postString = "ChangeAccordingtoyourdata=\(paramOne)&ChangeAccordingtoyourdata2=\(paramTwo)"
    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=\(error)")
            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 = \(response)")
    
            SVProgressHUD.showError(withStatus: "Request has not submitted successfully.\nPlease try after some time")
        }
    
        let responseString = String(data: data, encoding: .utf8)
        print("responseString = \(responseString)")
    
        SVProgressHUD.showSuccess(withStatus: "Request has submitted successfully.\nPlease wait for a while")
        DispatchQueue.main.async {
    
    
    
        // enter code
    
        }
    
    }
    task.resume()
    

    【讨论】:

      【解决方案7】:

      完美的 nRewik 答案已更新至 2019:

      制作字典:

      let dic = [
          "username":u,
          "password":p,
          "gems":g ]
      

      像这样组装它:

      var jsonData:Data?
      do {
          jsonData = try JSONSerialization.data(
            withJSONObject: dic,
            options: .prettyPrinted)
      } catch {
          print(error.localizedDescription)
      }
      

      完全像这样创建请求,注意它是一个“帖子”

      let url = URL(string: "https://blah.com/server/dudes/decide/this")!
      var request = URLRequest(url: url)
      
      request.setValue("application/json; charset=utf-8",
           forHTTPHeaderField: "Content-Type")
      request.setValue("application/json; charset=utf-8",
           forHTTPHeaderField: "Accept") 
      request.httpMethod = "POST"
      request.httpBody = jsonData
      

      然后发送,检查网络错误(因此,没有带宽等)或来自服务器的错误响应:

      let task = URLSession.shared.dataTask(with: request) { data, response, error in
          guard let data = data, error == nil else {
              // check for fundamental networking error
              print("fundamental networking error=\(error)")
              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 = \(response)")
          }
      
          let responseString = String(data: data, encoding: .utf8)
          print("responseString = \(responseString)")
      

      幸运的是现在很容易。

      【讨论】:

        【解决方案8】:

        你可以这样做:

        func HTTPPostJSON(url: String,  data: NSData,
            callback: (String, String?) -> Void) {
        
                var request = NSMutableURLRequest(URL: NSURL(string: url)!)
                request.HTTPMethod = "POST"
                request.addValue("application/json",forHTTPHeaderField: "Content-Type")
                request.addValue("application/json",forHTTPHeaderField: "Accept")
                request.HTTPBody = data
                HTTPsendRequest(request, callback: callback)
        }
        
        func HTTPsendRequest(request: NSMutableURLRequest,
            callback: (String, String?) -> Void) {
                let task = NSURLSession.sharedSession()
                    .dataTaskWithRequest(request) {
                        (data, response, error) -> Void in
                        if (error != nil) {
                            callback("", error.localizedDescription)
                        } else {
                            callback(NSString(data: data,
                                encoding: NSUTF8StringEncoding)! as String, nil)
                        }
                }
        
                task.resume()
        }
        //use
        var data :Dictionary<String, AnyObject> = yourDictionaryData<--
        var requestNSData:NSData = NSJSONSerialization.dataWithJSONObject(request, options:NSJSONWritingOptions(0), error: &err)!
        HTTPPostJSON("http://yourPosturl..", data: requestNSData) { (response, error) -> Void in
            if error != nil{
                //error
                return;
            }
        
            println(response);
        }
        

        【讨论】:

          【解决方案9】:
          var request = URLRequest(url: URL(string: "http://yogpande.apphb.com/api/my/posttblhouse")!)
                  request.httpMethod = "POST"
                  let postString = "email=testname@gmail.com&password=1234567"
                  request.httpBody = postString.data(using: .utf8)
                  let task = URLSession.shared.dataTask(with: request) { data, response, error in
                      guard let data = data, error == nil else {
                          print("error=(error)")
                          return
                      }
          
                      if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 {     
                          print("statusCode should be 200, but is \(httpStatus.statusCode)")
                          print("response = \(response)")
          
                      }
          
                      let responseString = String(data: data, encoding: .utf8)
                      print("responseString = \(responseString)")
                  }
                  task.resume()
              }
          

          【讨论】:

            【解决方案10】:

            Swift4 - Apple 解决方案“POST”和“Codable”

            使用 request.httpmethod = "Post"Codable Stucts 将数据上传到网站:

            @见:Listing 2 Configuring a URL request

            let userlogin = User(username: username, password: password, deviceid:UIDevice.current.identifierForVendor!.uuidString)
            
                guard let uploadData = try? JSONEncoder().encode(userlogin) else {
                    print("Error UploadData: ")
                    return
                }
            
                let urlUser = URL(string: APPURL.apiURL)!
            
                var request = URLRequest(url: urlUser)
                request.httpMethod = "POST"
                request.setValue("application/json", forHTTPHeaderField: "Content-Type")
            
                var responseStatus = 0
            
                let task = URLSession.shared.uploadTask(with: request, from: uploadData) { data, response, error in
                    if let error = error {
                        let code = (error as NSError).code
                        print("Error:\(code) : \(error.localizedDescription)")
                        completion(code)
                        return
                    }  
                  guard let response = response as? HTTPURLResponse else {
                        print("Invalid response")
                        return
                    }
            // do your response handling here ...
            

            【讨论】:

            • 这个答案不是很好 - 但是那里的链接中有一些最近可用的代码。 ?
            • @Jonny:它只是获得 POST 的最低配置,但你是对的,缺少可编码部分......我的错!我现在确实更新了。
            • 是的,可编码的结构是未来?
            • 您好!我找到了这个答案,但不能用它来解决我的问题,有人可以帮我吗?:stackoverflow.com/questions/53598917/…
            【解决方案11】:
                // prepare json data
                let mapDict = [ "1":"First", "2":"Second"]
            
                let json = [ "title":"ABC" , "dict": mapDict ] as [String : Any]
                let jsonData : NSData = NSKeyedArchiver.archivedData(withRootObject: json) as NSData
            
                // create post request
                let url = NSURL(string: "http://httpbin.org/post")!
                let request = NSMutableURLRequest(url: url as URL)
                request.httpMethod = "POST"
            
                // insert json data to the request
                request.httpBody = jsonData as Data
            
            
                let task = URLSession.shared.dataTask(with: request as URLRequest){ data,response,error in
                    if error != nil{
                        return
                    }
                    do {
                        let result = try JSONSerialization.jsonObject(with: data!, options: []) as? [String:AnyObject]
            
                        print("Result",result!)
            
                    } catch {
                        print("Error -> \(error)")
                    }
                }
            
                task.resume()
            

            【讨论】:

              【解决方案12】:
                  var request = URLRequest(url: URL(string:  "your URL")!)
                  request.httpMethod = "POST"
              
              
                  let postString =  String(format: "email=%@&lang=%@", arguments: [txt_emailVirify.text!, language!])
                  print(postString)
              
                  emailString = txt_emailVirify.text!
              
                  request.httpBody = postString.data(using: .utf8)
                  request.addValue("delta141forceSEAL8PARA9MARCOSBRAHMOS", forHTTPHeaderField: "Authorization")
                  request.addValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
                  request.addValue("application/json", forHTTPHeaderField: "Accept")
              
              
                  let task = URLSession.shared.dataTask(with: request) { data, response, error in
                      guard let data = data, error == nil
                          else
                      {
                          print("error=\(String(describing: error))")
                          return
                      }
              
                      do
                      {
              
                          let dictionary = try JSONSerialization.jsonObject(with: data, options: .allowFragments) as! NSDictionary
                          print(dictionary)
              
                          let status = dictionary.value(forKey: "status") as! String
                          let sts = Int(status)
                          DispatchQueue.main.async()
                              {
                                  if sts == 200
                                  {
                                      print(dictionary)
              
              
                                  }
                                  else
                                  {
                                     self.alertMessageOk(title: self.Alert!, message: dictionary.value(forKey: "message") as! String)
              
              
                                  }
                          }
                      }
                      catch
                      {
                          print(error)
                      }
              
                  }
                  task.resume()
              

              【讨论】:

                【解决方案13】:

                在我尝试不使用像 Alamofire 这样的 3rd 方框架时发现的几个答案的组合。

                    let body: [String: Any] = ["provider": "Google", "email": "emailaddress@gmail.com"]
                    let api_url = "https://erics.es/p/u"
                    let url = URL(string: api_url)!
                    var request = URLRequest(url: url)
                
                    do {
                        let jsonData = try JSONSerialization.data(withJSONObject: body, options: .prettyPrinted)
                        request.httpBody = jsonData
                    } catch let e {
                        print(e)
                    }
                
                    request.httpMethod = HTTPMethod.post.rawValue
                    request.addValue("application/json", forHTTPHeaderField: "Content-Type")
                
                    let task = URLSession.shared.dataTask(with: request) { data, response, error in
                        guard let data = data, error == nil else {
                            print(error?.localizedDescription ?? "No data")
                            return
                        }
                        let responseJSON = try? JSONSerialization.jsonObject(with: data, options: [])
                        if let responseJSON = responseJSON as? [String: Any] {
                            print(responseJSON)
                        }
                    }
                
                    task.resume()
                

                【讨论】:

                  【解决方案14】:
                  import UIKit
                  
                  class ViewController: UIViewController {
                  
                      var getdata = NSMutableData()
                      @IBOutlet weak var password_txt: UITextField!
                      @IBOutlet weak var mobile_txt: UITextField!
                      @IBOutlet weak var email_txt: UITextField!
                      @IBOutlet weak var name_txt: UITextField!
                      override func viewDidLoad() {
                          super.viewDidLoad()
                          // Do any additional setup after loading the view, typically from a nib.
                      }
                  
                      override func didReceiveMemoryWarning() {
                          super.didReceiveMemoryWarning()
                          // Dispose of any resources that can be recreated.
                  
                      }
                      @IBAction func RegAction(_ sender: UIButton) {
                          let url = URL(string: "https//.....")
                          var requrl = URLRequest(url: url!)
                          requrl.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "content_type")
                          requrl.httpMethod = "post"
                          let postString = "name=\(name_txt.text!)&email=\(email_txt.text!)&mobile=\(mobile_txt.text!)&password=\(password_txt.text!)"
                          print("poststring-->>",postString)
                          requrl.httpBody = postString.data(using: .utf8)
                          let task = URLSession.shared.dataTask(with: requrl){(data,response,error) in
                              let mydata = data
                              do{
                                  print("mydata",mydata!)
                                  do{
                                      self.getdata.append(mydata!)
                                      let jsondata = try JSONSerialization.jsonObject(with: self.getdata as Data, options: [])
                                      print("jsondata-->",jsondata)
                                  }
                              }
                              catch
                              {
                                  print("error-->",error.localizedDescription)
                              }
                          };
                          task.resume()
                  
                      }
                  }
                  `GET METHOD`
                  import UIKit
                  
                  class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {
                      var dataarray = [[String: Any]]()
                      func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
                          return dataarray.count
                      }
                      func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
                          return 450.0
                      }
                  
                      func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
                          let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! TableViewCell
                          let  item = dataarray[indexPath.row]
                  
                          cell.name_txt.text = item["name"]as? String ?? ""
                          cell.pname_txt.text = item["realname"]as? String ?? ""
                          cell.team_txt.text = item["team"]as? String ?? ""
                          cell.firstapp_txt.text = item["firstappearance"]as? String ?? ""
                          cell.Createdby_txt.text = item["createdby"]as? String ?? ""
                          cell.Publisher_txt.text = item["publisher"]as? String ?? ""
                  
                          if item["imageurl"]as? String ?? "" != ""{
                              let url = URL(string: item["imageurl"]as? String ?? "")
                              if url != nil{
                                  let data = try? Data(contentsOf: url!) //make sure your image in this url does exist, otherwise unwrap in a if let check / try-catch
                                  cell.imgvw.image = UIImage(data: data!)
                              }
                          }
                          return cell
                       }
                  
                  
                      @IBOutlet weak var apiTable: UITableView!
                      override func viewDidLoad() {
                          super.viewDidLoad()
                          // Do any additional setup after loading the view, typically from a nib.
                      }
                      override func viewWillAppear(_ animated: Bool) {
                          guard let url = URL(string: "https://www.simplifiedcoding.net/demos/marvel/")
                              else {return}
                          let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
                              guard let dataResponse = data,
                                  error == nil else {
                                      print(error?.localizedDescription ?? "Response Error")
                                      return }
                              do{
                                  //here dataResponse received from a network request
                                  let jsonResponse = try JSONSerialization.jsonObject(with:
                                      dataResponse, options: []) as? [[String:Any]] ?? [[:]]
                                  print("jsonResponse---->",jsonResponse) //Response result
                  
                                  self.dataarray = jsonResponse
                                  DispatchQueue.main.async {
                  
                  
                  
                                      self.apiTable.reloadData()
                                  }
                              } catch let parsingError {
                                  print("Error", parsingError)
                              }
                          }
                          task.resume()
                      }
                  
                  }
                  

                  【讨论】:

                  • 最好包含一些问题描述,而不是仅仅粘贴代码。
                  【解决方案15】:

                  不需要库,只需使用URLSession

                  这是一个例子:

                  let sampleData = ["key": "Value"]
                  
                  var urlRequest = URLRequest(url: URL(string: "https://REPLACE.ME")!)
                  let urlSession = URLSession = URLSession(configuration: .default)
                  
                  let encoder = JSONEncoder()
                  // inside a throwing function or wrap it in a doCatch block
                  let jsonData = try encoder.encode(sampleData)
                  
                  urlRequest.httpMethod = "POST"
                  urlRequest.addValue("application/json",forHTTPHeaderField: "Content-Type")
                  urlRequest.httpBody = jsonData
                  
                  let task = urlSession.dataTask(with: urlRequest) { data, response, error in
                      let statusCode = (response as? HTTPURLResponse)?.statusCode
                      print("??‍♂️ \(statusCode)")
                  }
                  
                  task.resume()
                  

                  【讨论】:

                    【解决方案16】:
                    func function()
                    {
                        
                        var parameters = [String:String]()
                        let apiToken = "Bearer \(ApiUtillity.sharedInstance.getUserData(key: "vAuthToken"))"
                        let headers = ["Vauthtoken":apiToken]
                        
                        parameters = ["firstname":name,"lastname":last_name,"mobile":mobile_number,"email":emails_Address]
                        
                        
                        Alamofire.request(ApiUtillity.sharedInstance.API(Join: "user/edit_profile"), method: .post, parameters: parameters, encoding: URLEncoding.default,headers:headers).responseJSON { response in
                            debugPrint(response)
                            if let json = response.result.value {
                                let dict:NSDictionary = (json as? NSDictionary)!
                                print(dict)
                                //                print(response)
                                
                                let StatusCode = dict.value(forKey: "status") as! Int
                                
                                if StatusCode==200
                                {
                                    ApiUtillity.sharedInstance.dismissSVProgressHUDWithSuccess(success: "Success")
                                    let UserData = dict.value(forKey: "data") as! NSDictionary
                                    print(UserData)
                                    
                                }
                                    
                                else if StatusCode==401
                                {
                                    let ErrorDic:NSDictionary = dict.value(forKey: "message") as! NSDictionary
                                    let ErrorMessage = ErrorDic.value(forKey: "error") as! String
                    
                                }
                                else
                                {
                    
                                    let ErrorDic:NSDictionary = dict.value(forKey: "message") as! NSDictionary
                                    let ErrorMessage = ErrorDic.value(forKey: "error") as! String
                                }
                                
                            }
                            else
                            {
                                ApiUtillity.sharedInstance.dismissSVProgressHUDWithError(error: "Something went wrong")
                            }
                        }
                    

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 2016-09-24
                      • 2020-05-17
                      • 1970-01-01
                      • 2019-12-05
                      • 1970-01-01
                      • 2020-05-23
                      • 2017-11-28
                      • 1970-01-01
                      相关资源
                      最近更新 更多