swift从入门到放弃-网络请求(4)

网络请求源代码

基于Alamofire的数据请求,json返回格式

  //MARK: - 普通的post请求
    func post(url: String, params: NSDictionary, succeeded: @escaping (_ reponseObject: Any?)->(), failed: @escaping (_ error: Error?)->()) {
        Alamofire.request(url, method: .post, parameters: params as? Parameters, encoding:JSONEncoding.default).validate().responseJSON { (response) in
            switch response.result {
            case .success(let success):
                succeeded(success)
            case .failure(let error):
                failed(error)
            }
        }
    }

以表单的格式上传图片

    //MARK: - 上传图片
    func upload(url: String, imageArray: [UIImage], progress: @escaping (Progress)->(), succeeded: @escaping (_ responseObject: Any?)->(), failed: @escaping (_ error: Error?)->()) {
        
        Alamofire.upload(multipartFormData: { (formData) in
            let count = String(format: "%d", arguments: [imageArray.count]).data(using: .utf8)
            formData.append(count!, withName: "f_count")
            
            for i in 0..<imageArray.count {
                let name = String(format: "pic_%d", arguments: [i])
                let fileName = name + ".jpg"
                let image = imageArray[i]
                
                if var data: NSData = UIImagePNGRepresentation(image) as NSData? {
                    if CGFloat(data.length)/(1000 * 1000.0) > 1{
                        data = (UIImageJPEGRepresentation(image, (1000 * 1000.0)/CGFloat(data.length)) as NSData?)!
                    }
                    formData.append(data as Data, withName: name, fileName: fileName, mimeType: "image/jpg")
                }
            }
            
        }, to: url) { (result) in
            switch result {
            case .success(request: let load, _, _) : do {
                load.uploadProgress(closure: progress)
                load.responseJSON(completionHandler: { (response) in
                    succeeded(response.value as AnyObject)
                })
                }
            case .failure(let error) : do {
                failed(error)
                }
            }
        }
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,198评论 4 61
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,868评论 18 139
  • 白天的学校后街到处都是人,到了晚上九点半以后,终于归于沉寂。 晚上陪室友出去买东西,不经意一抬头,今晚的月光,真美...
    吴安安阅读 302评论 0 0
  • 因为常带着儿子看新闻,对中央电视台新闻频道一幅关于孝敬父母的公益广告画就有了印象,画上一个中年面子蹲在地上给他父亲...
    虎啸中华阅读 448评论 0 1
  • 许久不曾触碰的文字,竟渐觉出生疏来。而我,却并非有意拒绝执笔,只是,少了曾经那份体味人生况味的情怀。我想,这...
    王花深阅读 200评论 2 3