swift 常用网络请求框架 Alamofire

本文深入探讨了使用Swift语言进行网络请求的各种方法,包括GET、POST请求,上传数据和文件,以及下载资源。详细介绍了Alamofire库的使用,涵盖了设置请求头、处理响应数据、下载进度监控等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//    get--01---responseData

let url="\(BASEURL)"+LUNBOURL

    let image:UIImage=UIImage.init(named:"bannerhomeOne")!

    //获取数据

    func normalGetData()  {


 //get--01--response


    Alamofire.request(url).response { (returnResult)in

    if let data = returnResult.data,let utf8Text =String(data: data, encoding: .utf8) {

    print(" utf8Text =\(utf8Text)")

    }

    }
//    get--02---responseData

        Alamofire.request(url).responseData { (returnResult)in

            debugPrint(" returnResult =\(returnResult)")

            if let data = returnResult.data,let utf8Text =String(data: data, encoding: .utf8) {

                print(" utf8Text =\(utf8Text)")

            }

        }

   

 //get--03--responseString

        Alamofire.request(url).responseString { (returnResult)in

            debugPrint(" Sucess =\(returnResult.result.isSuccess)")

            print(" returnResult =\(returnResult)")

        }

   

 //get --04--responseJSON

        Alamofire.request(url).responseJSON { (returnResult)in

            debugPrint("responseJSON -->\(returnResult)")

            if let json = returnResult.result.value {//这个转换的json数据比较正规

                print("responseJSON -->\(json)")

                /*  返回请求地址、数据、和状态结果等信息

                 print(" responseJSON() --> \(returnResult.request!)")

                 print("responseJSON() --> \(returnResult.data!)")

                 print(" responseJSON() --> \(returnResult.result)")

                 */

            }

        }

 

//        get--05---queue

//         补充:1.参数:queue:请求队列 --> 就是默认在主线程中执行~我们可以自定义调度队列。

//         官方解释:Response handlers by default are executed on the main dispatch queue. However, a custom dispatch queue can be provided instead.

       

        let customQueue = DispatchQueue.global(qos: .utility)

        Alamofire.request(url).responseJSON(queue: customQueue) { (returnResult)in

            print("请求队列 -->\(returnResult)")

        }

 

 //get---06带请求头设置获取数据

let headers: HTTPHeaders = [

                    "Accept":"application/json"//设置客户端以什么格式解析服务器返回的数据

                ]

                Alamofire.request(url, headers: headers).responseJSON { (returnResult)in

                    print("获取数据并设置请求头 --> returnResult =\(returnResult)")

                }

            }

 

//GET请求---无参数

func getData()  {

        Alamofire.request(url, method: .get).responseJSON { (returnResult)in

            print("GET 请求无参数 --> returnResult =\(returnResult)")

        }

    }

 //POST请求----无参数

func postData(){

        Alamofire.request(url, method: .post).responseJSON { (returnResult)in

            print("POST 请求无参数 --> returnResult =\(returnResult)")

        }

    }

 //POST请求有参数

func postDataWithParams() {

        let param = [String:String]()

        Alamofire.request(url, method: .post, parameters: param).responseJSON { (returnResult)in

            print(" POST 请求有参数参数 --> returnResult =\(returnResult)")

        }

    }

//   URLRequest的方式请求

 func URLRequestWidth() {


        let urls = URL(string: url)

        var urlRequest = URLRequest(url: urls!)

        urlRequest.httpMethod = "POST"

                let param = ["type":"","key":""]

                do {

                    urlRequest.httpBody = try JSONSerialization.data(withJSONObject: param, options: [])

                } catch {

                    print(error)

                }


        urlRequest.setValue("application/json", forHTTPHeaderField:"Content-Type")

        Alamofire.request(urlRequest).responseData { (returnResult)in

            debugPrint(returnResult)

            if let data = returnResult.data,let utf8Text = String(data: data, encoding: .utf8) {

                print(" URLRequest请求方式 --> utf8Text =\(utf8Text)")

            }

        }

    }

//下载不带进度

func download() {

        // 1.下载图片

        Alamofire.download(url).responseData { (returnResult)in

            if let data = returnResult.result.value {

                let image = UIImage(data: data)

                print("image =\(image!)")

            } else {

                print("下载失败")

            }

        }


    }

//下载带进度

func downoadWithProgress() {


    Alamofire.download(url).downloadProgress { (progress)in

    print("下载进度 =\(progress.fractionCompleted)")

    }.responseData { (returnResult) in

    if let data = returnResult.result.value {

    let image = UIImage(data: data)

    print("image =\(image!)")

    } else {

    print("下载失败")

    }

    }

    }

 //uploadData----上传data数据

func uploadData()  {


        let imageData =UIImagePNGRepresentation(image)!

        Alamofire.upload(imageData, to: url).responseJSON { response in

            debugPrint(response)

        }

    }

//uploadFile----上传文件

func uploadFile()  {

        let fileURL = Bundle.main.url(forResource:"video", withExtension:"mov")


        Alamofire.upload(fileURL!, to: url).responseJSON { response in

            debugPrint(response)

        }

    }

 //uploadMultiFormData----上传多个表单数据

func uploadMultiFormData()  {

        Alamofire.upload(

            multipartFormData: { multipartFormData in//添加多个表单数据是吧本地url传上去

//                multipartFormData.append(unicornImageURL, withName: "unicorn")

//                multipartFormData.append(rainbowImageURL, withName: "rainbow")

        },

            to: url,

            encodingCompletion: { encodingResult in

                switch encodingResult {

                case .success(let upload,_,_):

                    upload.responseJSON { responsein

                        debugPrint(response)

                    }

                case .failure(let encodingError):

                    print(encodingError)

                }

        }

        )

    }

//上传带进度条

 func uploadWithProgress() {

        let fileURL = Bundle.main.url(forResource:"video", withExtension:"mov")

        

        Alamofire.upload(fileURL!, to: url)

            .uploadProgress { progress in // main queue by default

                print("Upload Progress:\(progress.fractionCompleted)")

            }

            .downloadProgress { progress in // main queue by default

                print("Download Progress:\(progress.fractionCompleted)")

            }

            .responseJSON { response in

                debugPrint(response)

        }

    }


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值