邮递员请求 Alamofire 请求

Posted

技术标签:

【中文标题】邮递员请求 Alamofire 请求【英文标题】:Postman request to Alamofire request 【发布时间】:2016-05-18 03:31:43 【问题描述】:

当我使用 POSTMAN 发出发布请求时,我没有遇到任何问题,但是当我使用 alamofire 时,我遇到了问题。该帖子仍然通过 alamofire 请求,但接收数据的方式不同。一个alamofire请求长啥样,跟下面的邮递员一模一样……

【问题讨论】:

你能贴一些代码吗? 【参考方案1】:

Swift 2.x

typealias apiSuccess = (result: NSDictionary?) -> Void
typealias apiProgress = (result: NSDictionary?) -> Void // when you want to download or upload using Alamofire..
typealias apiFailure = (error: NSDictionary?) -> Void

// Normal http request with JSON response..
func callJSONrequest(url:String, params:[String: AnyObject]?, success successBlock :apiSuccess,
                     failure failureBlock :apiFailure) 

    Alamofire.request(.POST, url, parameters: params, encoding: ParameterEncoding.URL)
        .responseJSON  response in
            print("\(response.request?.URL)")  // original URL request
            //print(response.response) // URL response
            //print(response.data)     // server data
            //print(response.result)   // result of response serialization
            if response.result.isSuccess 
                let jsonDic = response.result.value as! NSDictionary
                successBlock(result: jsonDic)

             else 
                let httpError: NSError = response.result.error!
                let statusCode = httpError.code
                let error:NSDictionary = ["error" : httpError,"statusCode" : statusCode]
                failureBlock(error: error)
            
    


func myFunction() 
    let myApiSuccess: apiSuccess = (result: NSDictionary?) -> Void in
        print ("Api Success : result is:\n \(result)")
        // Here you can make whatever you want with result dictionary
    

    let myApiFailure: apiFailure = (error: NSDictionary?) -> Void in
        print ("Api Failure : error is:\n \(error)")
        // Here you can check the errors with error dictionary looking for http error type or http status code
    
    var params :[String: AnyObject]?
    let email : String! = "stuart@gmail.com"
    let password : String! = "thisismypassword"
    params = ["email" : email, "password" : password]
    let url : String! = "https://arcane-***-75067.herokuapp.com/login"
    callJSONrequest(url, params: params, success: myApiSuccess, failure: myApiFailure)

【讨论】:

您好,我正在努力完成这项工作。我得到了底部功能的错误。首先为什么在函数的第一个括号之后有一个逗号......我也得到'表达式解析为每个 let myApiSuccess 和 let myApiFailure 中未使用的函数 我现在检查一下,可能在从我的个人仓库复制和粘贴时出现了一些错误..等等.. 谢谢,我不得不添加或删除一些括号之类的东西,所以我不确定它有什么问题 我添加了更改节点服务器发送响应的方式(它不是 json),现在一切正常!非常感谢你 OP 遇到了什么问题..?

以上是关于邮递员请求 Alamofire 请求的主要内容,如果未能解决你的问题,请参考以下文章

Alamofire 从多个请求中取消一个请求

401 alamofire 获取带有标头的请求

AlamoFire 图像内存问题

用 alamofire 快速发送获取请求

使用 django API 和 Alamofire 请求失败

如何在 Swift 3 中使用 Alamofire 在 POST 请求中将给定的 JSON 作为参数发送?