1:定义一个网络工具类,如HttpTools,NetworkTools等等
在NetworkTools.swift类中:
这里采用单例封装:
import AFNetworking
// 枚举方式1
enum RequestType {
case GET
case POST
}
// 枚举方式2
enum RequestType1 : Int {
case GET = 0
case POST = 1
}
// 枚举方式3
enum RequestType2 : String {
case GET = "GET"
case POST = "POST"
}
class NetworkTools: AFHTTPSessionManager {
/// let是线程安全的
static let shareInstance : NetworkTools = {
let tools = NetworkTools()
tools.responseSerializer.acceptableContentTypes?.insert("text/html")
return tools
}()
}
// MARK: - 封装请求方法
extension NetworkTools {
func request(methodType : RequestType, urlString : String, parameters : [String : AnyObject], finished:(result : AnyObject?,error : NSError?) -> ()) {
// 定义成功的回调闭包:使用一个常量来接收它
let successCallBack = { (task : NSURLSessionDataTask, result : AnyObject?) in
finished(result: result, error: nil)
}
// 定义一个失败的回调闭包:使用一个常量来接收它
let failureCallBack = { (task : NSURLSessionDataTask?, error : NSError) in
finished(result: nil, error: error)
}
// 发送网络请求
if methodType == .GET {
GET(urlString, parameters: parameters, progress: nil, success: successCallBack, failure: failureCallBack)
}else {
POST(urlString, parameters: parameters, progress: nil, success: successCallBack, failure: failureCallBack)
}
}
}
2:在viewController.swift中调用网络请求接口
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
//print(NetworkTools.shareInstance)
//print(NetworkTools.shareInstance)
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
/// 外面请求接口回调
NetworkTools.shareInstance.request(.POST, urlString: "http://httpbin.org/post", parameters: ["name" : "lishengbing","age" : 106]) { (result, error) in
if error != nil {
print(error)
return
}
print(result)
}
}
}
知识点:
1:swift中创建单例:
class NetworkTools: AFHTTPSessionManager {
/// let是线程安全的
static let shareInstance : NetworkTools = {
let tools = NetworkTools()
return tools
}()
}
2:swift中枚举的定义:
// 枚举方式1
enum RequestType {
case GET
case POST
}
// 枚举方式2
enum RequestType1 : Int {
case GET = 0
case POST = 1
}
// 枚举方式3
enum RequestType2 : String {
case GET = "GET"
case POST = "POST"
}
意见反馈邮件:1415429879@qq.com
欢迎你们的阅读和赞赏、谢谢!