【问题标题】:How to send request in Alamofire 4.0 only with parameters and Body using POST method in swift?如何在 Alamofire 4.0 中仅使用参数和正文在 swift 中使用 POST 方法发送请求?
【发布时间】:2018-03-28 04:18:55
【问题描述】:

我是这样使用的,但是在这种情况下,我需要调用带有参数和 Body 的 API。请帮我。提前致谢。

Alamofire.request(postUrl, method: .post, parameters: params, encoding: CustomPostEncoding(), headers: nil).validate().responseJSON{ response in

            switch response.result
            {
            case .success:
                MBProgressHUD.hide(for: self.view, animated: true)
                if let val = response.result.value
                {
                    let json = JSON(val)
                    print(json)
                }

            case .failure(let error):
                print(error)
            }
        }

【问题讨论】:

    标签: ios swift alamofire


    【解决方案1】:
      var url = "http://..."
        let _headers : HTTPHeaders = ["Content-Type":"application/x-www-form-urlencoded"]
        let params : Parameters = ["grant_type":"password","username":"mail","password":"pass"]
    
        let url =  NSURL(string:"url" as String)
    
        request(url, method: .post, parameters: params, encoding: URLEncoding.httpBody , headers: _headers).responseJSON(completionHandler: {
            response in response
    
            let jsonResponse = response.result.value as! NSDictionary
    
            if jsonResponse["access_token"] != nil
            {
                access_token = String(describing: jsonResponse["accesstoken"]!)
    
            }
    
        })
    

    参考:- POST request with a simple string in body with Alamofire

    【讨论】:

    • 实际上我需要将一个字典作为正文传递,并且一次我要发送这样的参数 ["user name" : "Tester", "password" : "123456"]
    【解决方案2】:

    使用您的参数而不是 class_id 和时间。

    func listOfClassesData(url: String,class_id: String,time: String,redClassesData : [String: Any] ,completionHandler:@escaping (Bool) -> ()){
    
                let Auth_header    = ["Authorization" : "Bearer "+getBearerToken()]
    
                let paameters:Parameters = [
                    "class_id" : class_id,
                    "time" :time,
                ]
    
                print(url,Auth_header)
                Alamofire.request(url, method: .post, parameters: paameters, encoding: JSONEncoding.default, headers: Auth_header)
                    .responseJSON { response in
                        print(response)
                        switch response.result{
                        case .success:
                            let statusCode: Int = (response.response?.statusCode)!
                            switch statusCode{
                            case 200:
                                if let json = response.result.value{
                                    completionHandler(true)
                                }
                                break
                            default:
                                completionHandler(false)
                                break
                            }
                            break
                        case .failure:
                            completionHandler(false)
                            break
                        }
                }
            }
    

    【讨论】:

      【解决方案3】:
      let url = "your api url"
      let param = ["user":"user@test.com","pass":"12345"]
      
      Alamofire.request(url, method: .post , parameters: param)
      .validate()
      .responseJSON {
          response in
          switch response.result{
          case .success:
              var jsonResult = [String:AnyObject]()
              do
              {
                  //Get response successfully of api
                  jsonResult = try JSONSerialization.jsonObject(with: response.data!, options: []) as! [String:AnyObject]
                  print(jsonResult)
              }
      
              catch let error as NSError {
              //get error if there is any problem in response of api.
                  print("--->",error)
              }
          case .failure(let error):
              //get error if there is any problem while calling api.
              print("---->",error)
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2017-03-02
        • 1970-01-01
        • 2015-10-28
        • 2017-12-03
        • 1970-01-01
        • 2015-11-04
        • 2016-11-19
        • 2023-03-11
        • 1970-01-01
        相关资源
        最近更新 更多