Apend认证令牌到Alamorefire URL请求

时间:2017-01-22 05:21:12

标签: ios swift swift3 alamofire

我是swift的新手,并在swift 3.0中开展项目。我设法设置了alamorefire类来调用webservises并且它正常工作。代码如下。

import UIKit
import Alamofire
import SwiftyJSON

class APIManager: NSObject {
    class func apiGet(serviceName:String,parameters: [String:Any]?, completionHandler: @escaping (JSON?, NSError?) -> ()) {

        Alamofire.request(serviceName, method: .get, parameters: parameters, encoding: URLEncoding.default, headers: nil).responseJSON { (response:DataResponse<Any>) in

            switch(response.result) {
            case .success(_):
                if let data = response.result.value{
                    let json = JSON(data)
                    completionHandler(json,nil)
                }
                break

            case .failure(_):
                completionHandler(nil,response.result.error as NSError?)
                break

            }
        }
    }

同样,当我想调用我在相应的viewcontroller类中执行的方法时。

import UIKit
import SwiftyJSON

class ViewController: UIViewController {
let appURLs = AppURLs.sharedInstance

    override func viewDidLoad() {
        super.viewDidLoad()

        let params = [
            "userName":"abc",
            "password":"abc"
        ]
        let loginURL = (self.appURLs.mainBaseURL)+(self.appURLs.addToSaveURL)

        APIManager.apiPost(serviceName: loginURL, parameters: params) { (json:JSON?, error:NSError?) in
            if error != nil {
                print(error?.localizedDescription as Any)
                return
            }
            print(json!)
        }
    }

但是由于我创建了一个单独的类来检索身份验证令牌,我的目标是将身份验证令牌方法与上面显示的方法(apiPost方法)一起附加。我创建的用于检索身份验证令牌的类的代码。任何帮助都会非常感激。

import Foundation

class ServerRequests {

    let parameters: String?
    let serverURL: String?

    init(parameters: String, serverURL: String) {
        self.parameters = parameters
        self.serverURL = serverURL
    }

    init(serverURL: String) {
        self.parameters = nil
        self.serverURL = serverURL
    }

    func connectToServer() -> NSMutableURLRequest {
        let post:NSString = parameters! as NSString
        let url:NSURL = NSURL(string: serverURL!)!
        let postData:NSData = post.data(using: String.Encoding.ascii.rawValue)! as NSData
        let postLength:NSString = String( postData.length ) as NSString
        let request:NSMutableURLRequest = NSMutableURLRequest(url: url as URL)
        request.httpMethod = "POST"
        request.httpBody = postData as Data
        request.setValue(postLength as String, forHTTPHeaderField: "Content-Length")
        request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
        request.setValue("*/*", forHTTPHeaderField: "Accept")
        let prefs:UserDefaults = UserDefaults.standard
        request.setValue(prefs.value(forKey: "TOKEN")! as? String, forHTTPHeaderField: "Cvs-Token")
        return request
    }

0 个答案:

没有答案