此篇文章紧接上一篇
自己常用的swift网络请求工具类(一)--NSURLSession
http://www.jianshu.com/p/96b332d6269e
前戏已经做了80%的工作,下面把剩下的给做了
同样定义一个Network结构体----有关结构体和类的区别,我就不在这写了
1.写一个不带params参数的get请求实例方法
/**
不带params的get请求
- parameter url: url
- parameter callback: 回调
*/
static func get(url: String, andCallback callback: (data: NSData?, response: NSURLResponse?, error: NSError?) -> Void) {
var manager = NetworkManager(method: .GET, url: url, params: nil, callback: callback)
manager.start()
}
2.写一个带params参数的get请求实例方法
/**
带params的get请求
- parameter url: url
- parameter params: 请求参数
- parameter callback: 回调
*/
static func get(url: String, andParams params: [String: AnyObject], andCallback callback: (data: NSData?, response: NSURLResponse?, error: NSError?) -> Void) {
var manager = NetworkManager(method: .GET, url: url, params: params, callback: callback)
manager.start()
}
3.post请求,我就不分开写了,下面的方法里请求参数可以为nil。。。
/**
POST请求
- parameter url: url
- parameter params: 请求参数---可以为nil
- parameter callback: 回调
*/
static func post(url: String, andParams params: [String: AnyObject]?, andCallback callback: (data: NSData?, response: NSURLResponse?, error: NSError?) -> Void) {
var manager = NetworkManager(method: .POST, url: url, params: params, callback: callback)
manager.start()
}
4.然后,如果大家用了swiftyJson第三方的话,也可以使用下面这个方法,在外面调用比较方便
/**
POST请求
- parameter url: url
- parameter params: 请求参数---可以为nil
- parameter callback: 回调
*/
static func post(url: String, andParams params: [String: AnyObject], andCallback callback: (result: JSON) -> Void) {
var manager = NetworkManager(method: .POST, url: url, params: params) { (data, response, error) in
guard let data1 = data else {
return
}
let json = JSON(data: data1)
callback(result: json)
}
manager.fire()
}
外面调用可以这样用。
/**
请求网络--不使用swiftyjson的回调
*/
func change() {
let BaseUrl = "http://150.55.93.122:8081/"
let codePath = "mobileCode/send.json"
let params = ["mobile": "18538729927", "type": 1]
Network.post(BaseUrl + codePath, andParams: params) { (data, response, error) in
guard let data1 = data else {
return
}
guard let str = String(data: data1, encoding: NSUTF8StringEncoding) else {
return
}
print(str)
}
}
/**
请求网络--使用swiftyjson的回调
*/
func change() {
let BaseUrl = "http://150.55.93.122:8081/"
let codePath = "mobileCode/send.json"
let params = ["mobile": "18538729927", "type": 1]
Network.post(BaseUrl + codePath, andParams: params) { (result) in
print(result["message"].stringValue)
}
}