Alamofire的使用和网络请求的封装,解决不能打印中文的问题

在swift3.0中Alamofire可以说是一个相当完美的网络请求的框架,使用起来和NFNetworking一样的顺手,在这里和大家分享一下,这次只做了一个浅层次的封装一个两层的封装,本文基于swift3.0


-----第一层发送网络请求

import UIKit

import Alamofire



enum MethodType{

    case GET

    case POST

    

}

class  NetworkTools: NSObject {

    //封装一个类方法;

    

    class func requetDate(_ type:MethodType,URLString:String,paramters:[String:AnyObject

        ]?=nil,finishCallBack:@escaping (_ result: AnyObject)->()){

        //获取类型:

        

        

        let method1 = type == .GET ?HTTPMethod.get : HTTPMethod.post

        

        

        Alamofire.request(URLString, method: method1, parameters:paramters).responseJSON { (response) in

            guard let result1 = response.result.value else{

                

                

                print(response )

                

                return

            }

            

            

            //处理Unicode编码。将unicode编码的json转成uft8编码

            guard  let data = response.data  else{

                

                

                return

            }

            

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

            print(utf8Text ?? "编码错误")

            finishCallBack(result1 as AnyObject)

            

            //finishCallBack(result1 as AnyObject)

           // finishCallBack(utf8Text as AnyObject)

            

        }

        

    }

    

    //上传图片;

    

  

    

    

   class func upLoadImageRequest(urlString : String, params:[String:String], data: [Data], name: [String],success : @escaping (_ response : [String : AnyObject])->(), failture : @escaping (_ error : Error)->()){

        

        let headers = ["content-type":"multipart/form-data"]

    

        //__________*************________________


    

    

    

    

    

            Alamofire.upload(

            multipartFormData: { multipartFormData in

                //666多张图片上传

                let flag = params["mobile"]

                //let userId = params["userId"]

                //multipartFormData.append(flag?.data(using: String.Encoding.utf8), withName: ""),

                multipartFormData.append((flag?.data(using: String.Encoding.utf8)!)!, withName: "mobile")

//                multipartFormData.append( (userId?.data(using: String.Encoding.utf8)!)!, withName: "userId")

                

                

                

                

                for i in 0..<data.count {

                    multipartFormData.append(data[i], withName: "avatar", fileName: name[i], mimeType: "image/png")

                }

        },

            to: urlString,

            method: .post,

            headers: headers,

            encodingCompletion: { encodingResult in

                switch encodingResult {

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

                    upload.responseJSON { response in

                        if let value = response.result.value as? [String: AnyObject]{

                            success(value)

                            

                           print(value)

                        }

                        

                        print("响应请求:"+"\response.response?.statusCode")

                        

                        

                        guard  let data = response.data  else{

                            

                            

                            return

                        }

                        //此处处理的是中文的打印问题,虽然格式不太完美,但是可以使用KJson能够解析,如果大家有什么好办法,可以下方留言,请赐教

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

                        print("照片上传返回:"+utf8Text!)

                        

                    }

                case .failure(let encodingError):

                   // PrintLog(encodingError)

                    failture(encodingError)

                }

        }

        )

 

    //换一种方法试一试;

//    Alamofire.upload(data[0], to: urlString).response { response in

//        debugPrint(response)

//         let utf8Text = String(data: response.data! , encoding: .utf8)

//        debugPrint("服务器返回---%@"+utf8Text!)

//       

//    }

    


   

    

    

    

    }

    

 

    

    

}


//封装网络请求的方法

class NetworkToolRequest: NSObject {


  class  func getIdentifierCode(params:[String:AnyObject],_ finishCallBack: @escaping(_ result: AnyObject)->()){

        

        

        NetworkTools.requetDate(.POST, URLString: "http://120.77.69.123:8080/ubEApi/eApi/sendSMSCaptcha.do") { (response) in

            

            

            finishCallBack(response)

            

            

            

    }

        

        

        

        

        

    }

    //注册---接口3.2

    class  func registUser(params:[String:AnyObject],_ finishCallBack: @escaping(_ result: AnyObject)->()){

        

        

   

      

     

     NetworkTools.requetDate(.POST, URLString: "http://120.77.69.123:8080 /ubEApi/eApi/register.do", paramters: params) { (response) in

        finishCallBack(response)

        }

        

    }


    


------

   

    

    

    

    }

    

 

    

    

}

 

    

    

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值