Alamofire请求简单使用

初识swift,Alamofire的使用当然是必须要掌握的,鄙人才疏学浅,使用初期能够有效的运用便是晴天。与之搭配使用的是SwiftyJSON,以下是封装内容:

import Foundation
import Alamofire
import SwiftyJSON


enum RequestType {
    case Get
    case Post
    case Put
    case Delete
}

typealias complete = (Bool?, AnyObject?) -> Void

class LGJNetworkTool {
    static let manager: SessionManager = {
        var defaultHeader = Alamofire.SessionManager.default.session.configuration.httpAdditionalHeaders ?? [:]
        let defaultConfig = URLSessionConfiguration.default
        defaultConfig.timeoutIntervalForRequest = 20
        defaultConfig.httpAdditionalHeaders = defaultHeader
        return Alamofire.SessionManager(configuration: defaultConfig, delegate: SessionDelegate(), serverTrustPolicyManager: nil)
    }()
}


extension LGJNetworkTool {

    static func requestData(requestType: RequestType, urlString: String, parameters: [String: Any]? = nil, successed: @escaping complete, failured: @escaping complete) {

        //获取请求类型
        var method: HTTPMethod?
        switch requestType {
        case .Get:
            method = HTTPMethod.get
        case .Post:
            method = HTTPMethod.post
        case .Put:
            method = HTTPMethod.put
        case .Delete:
            method = HTTPMethod.delete
        }

        //当前时间的时间戳
        let timeInteral: TimeInterval = Date().timeIntervalSince1970
        let timeStamp = Int(timeInteral)

        let headers: HTTPHeaders = [
            "AccessCode": "AccessCode",
            "timeStamp": "\(timeStamp)",
            "Signature": "SHA1算法签名"
        ]

        //发送网络请求
        Alamofire.request(urlString, method: method!, parameters: parameters, encoding: URLEncoding.default, headers: headers).responseJSON { (response) in
            //获取d返回结果
            switch response.result {
            case .success:
                let json = JSON(response.result.value as Any)
                if json["code"] == "404" {
                    print("链接失败")
                }else{
                    successed(true, response.result.value as AnyObject)
                }
            case .failure:
                failured(false, "链接服务器失败" as AnyObject)
            }

        }
    }
}

使用起来也是相当的简单,下面以一个简单的接口请求为例:

    func requestTest1()  {
        let urlStr = "http://study.teacheredu.cn/proj/proj/tlogin/mobile/v440/StudyContent/studyStatus.json?"
        let parameters: [String: String] = ["roletype":"1", "projectId":"6029","authid":"6903439","userId":"290557","isStage":"1"]
        LGJNetworkTool.requestData(requestType: .Get, urlString: urlStr, parameters: parameters, successed: { (successStatus, response) in
            print(successStatus as Any ,response as Any)
        }) { (failStatus, failError) in
            print(failStatus as Any,failError as Any)
        }
    }

推荐阅读更多精彩内容

  • 本篇是Alamofire中的请求抽象层的讲解 前言 在Alamofire中,围绕着Request,设计了很多额外的...
    老马的春天阅读 2,044评论 0 11
  • 其实刚开始想到这个话题的时候,我是觉得现在很多乐趣都是要花钱才能买到的,比如说,女孩子出去逛街买衣服啊,买包包啊,...
    鲤哈哈阅读 1,743评论 0 4
  • 方法的系统适配 以日历类为例:NSCalendar对象的创建有几种方法,但是那些新的方法是支持高版本系统的,也就是...
    MarceauHe阅读 243评论 0 0
  • 安好!见字如晤! 想给你写信的这个想法也有一段时间了,却一直没能付诸实施,因为似乎总是能给自己找到逃避的借口。 听...
    小兴nice阅读 182评论 0 1
  • 梦想,是人们常谈的话题。梦,只是心中所想,所渴望的目标吗?我想不是的,每个梦想成真的人,都付诸了他们的行动,为...
    起灬阅读 121评论 0 0