此篇文章緊接上一篇
自己常用的swift網絡請求工具類(一)--NSURLSession
http://www.lxweimin.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)
}
}