如何使用参数和Body在swift中使用POST方法在Alamofire 4.0中发送请求?

时间:2018-03-28 04:18:55

标签: ios swift alamofire

我这样使用,但在这种情况下,我需要使用参数和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)
            }
        }

3 个答案:

答案 0 :(得分:0)

  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

答案 1 :(得分:0)

使用您的参数而不是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
                    }
            }
        }

答案 2 :(得分:0)

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