微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

swift – Alamofire 3.2:如何验证“上传”POST呼叫的响应?

我有一个简单的上传POST调用,

Alamofire.upload(
    .POST,"https://httpbin.org/post",multipartFormData: { multipartFormData in
        multipartFormData.appendBodyPart(fileURL: unicornImageURL,name: "unicorn")
        multipartFormData.appendBodyPart(fileURL: rainbowImageURL,name: "rainbow")
    },encodingCompletion: { encodingResult in
        switch encodingResult {
        case .Success(let upload,_,_):
            upload.responseJSON { response in
                debugPrint(response)
            }
        case .Failure(let encodingError):
            print(encodingError)
        }
    }
)

即使响应是404/500错误,也总是会出现.Success情况.

我的问题是,如何验证此请求的响应?

解决方法

验证

认情况下,无论响应的内容如何,​​Alamofire都会将任何已完成的请求视为成功.如果响应具有不可接受的状态代码或MIME类型,则在响应处理程序之前调用validate会导致生成错误.
手动验证

Alamofire.request(.GET,"https://httpbin.org/get",parameters: ["foo": "bar"])
     .validate(statusCode: 200..<300)
     .validate(contentType: ["application/json"])
     .response { response in
         print(response)
     }

自动验证

自动验证200 … 299范围内的状态代码,并且响应的Content-Type标头与请求的Accept标头匹配(如果提供了一个).

Alamofire.request(.GET,parameters: ["foo": "bar"])
     .validate()
     .responseJSON { response in
         switch response.result {
         case .Success:
             print("Validation Successful")
         case .Failure(let error):
             print(error)
         }
     }

好吧,最后

case .Success(let upload,_):
                upload.validate(statusCode: 200..<300)
                    .validate(contentType: ["application/json"])
                    .response { response in
                        print(response)
                }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐