//基于系统的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