http封装

来源:互联网 发布:问卷调查报告数据分析 编辑:程序博客网 时间:2024/06/03 16:56

//基于系统的NSURLConnection的封装,暂时没有加入缓存


public enum HttpMethod: String {

   case GET = "GET"

   case POST = "POST"

   case PUT = "PUT"

   case DELETE = "DELETE"

    

}


class HttpConnect: NSObject, NSURLConnectionDataDelegate{

    var _URLConnection: NSURLConnection?

    var requetSuccessBlcok: ((jsonDict: NSDictionary) -> Void)?

    var requestErrorBlcok: ((errorCode: NSInteger) -> Void)?

    var _jsonData = NSMutableData()

    func request(method: HttpMethod, baseURL: String, parameter: Dictionary<String , AnyObject>?) {

        var realURL = baseURL

        if method == HttpMethod.GET {

            realURL = connectParameter(baseURL, parameter: parameter)

        }

        let url = NSURL(string: realURL)

        let request = NSMutableURLRequest(URL: url!)

        request.HTTPMethod = method.rawValue

        request.setValue("application/json", forHTTPHeaderField: "Content-type")

        if method != HttpMethod.GET {

            do {

                let data = try  NSJSONSerialization.dataWithJSONObject(parameter!, options: NSJSONWritingOptions.PrettyPrinted)

                request.HTTPBody = data

            }catch {

                

            }

        }

       _URLConnection = NSURLConnection(request: request, delegate: self)

    }

    

    func connectParameter(baseURL: String, parameter: Dictionary<String, AnyObject>?) -> String {

        if parameter == nil {

            return baseURL

        }else {

            let array = NSMutableArray()

            for (key,value) in parameter! {

                let str = "\(key)=\(value)"

                array.addObject(str)

            }

            let parameterStr = array.componentsJoinedByString("&")

            let realURL = "\(baseURL)?\(parameterStr)"

            return realURL

        }

    }

//MARK: NSURLConnectionDataDelegate

    func connection(connection: NSURLConnection, didReceiveResponse response: NSURLResponse) {

        

    }

    func connection(connection: NSURLConnection, didReceiveData data: NSData) {

        _jsonData.appendData(data)

    }

    func connection(connection: NSURLConnection, didFailWithError error: NSError) {

        requestErrorBlcok!(errorCode: error.code)

    }

    func connectionDidFinishLoading(connection: NSURLConnection) {

        do {

            let jsonDict = try NSJSONSerialization.JSONObjectWithData(_jsonData, options: NSJSONReadingOptions.MutableContainers)

            requetSuccessBlcok!(jsonDict: jsonDict as! NSDictionary)

        } catch {

            

        }

    }

    

}

Demo下载: ZIP 


0 0
原创粉丝点击