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
- http封装
- 封装http操作类
- HTTP访问协议封装
- Android封装Http请求
- Http连接封装
- Block封装http请求
- http请求封装
- cocos2d HTTP 通信封装
- win32 http 封装
- 简单封装 HTTP 请求
- http响应的封装
- 封装android http框架
- AngularJS封装$http.post()
- android-async-http 封装
- async-http 的封装
- react-native http封装
- go http 请求封装
- http请求方法封装
- 欢迎使用CSDN-markdown编辑器
- HDU-4217(树状数组)
- Nginx实现多个站点使用一个端口(配置Nginx的虚拟主机)
- 一个Netfilter nf_conntrack流表查找的优化-为conntrack增加一个per cpu cache
- 解决Cmder无法在Windows Xp下运行的问题
- http封装
- CentOS LNMP环境搭建
- 【剑指Offer面试题】 九度OJ1524:复杂链表的复制
- Ubuntu14.04.2无法连接无线网络问题解决方案
- Spark源码阅读笔记之BlockObjectWriter
- 脱机地址列表无法生成的奇怪解决办法!
- chardet字符集检测模块
- Linux调用backtrack函数打印程序崩溃时的调用堆栈
- 6.1 守护进程课后题2015/8/1