Alamofire POST请求无效

时间:2016-11-07 10:12:54

标签: ios swift alamofire

let requestDictionary : [String: AnyObject] = [
  "sm_username" : name as AnyObject,
  "sm_password" : pass as AnyObject
]  

let headers = [
  "Authorization": "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==",
  "Content-Type": "application/x-www-form-urlencoded",
  "Krikor": "Krikor"
]

Alamofire.request(baseURL+"login", method: .post, parameters: requestDictionary, encoding: JSONEncoding(options: []),headers: headers
        ).responseJSON{ response in
   debugPrint(response)                
   print("krirkrkdkd")
   print(response)      
}

所以基本上,标题没有被传递。既没有编码参数。为什么?以及如何解决?

1 个答案:

答案 0 :(得分:1)

Kiikor,

以下是swift中alamofire请求的工作示例,包括编码。

func files_download(sourcePath: String) {

    let defaults = UserDefaults.standard
    if let name = defaults.string(forKey: "dropBoxAuth")
    {
        token2Save = name
    }

    var headers:HTTPHeaders!
    let subPart: Dictionary =  ["path":sourcePath]
    do {
        let data = try JSONSerialization.data(withJSONObject: subPart, options: [])
        let dataString = String(data: data, encoding: .utf8)
        headers = ["Authorization": "Bearer " + token2Save, "Dropbox-API-Arg": dataString!]
    } catch {
        print("error")
    }

    Alamofire.request("https://content.dropboxapi.com/2/files/download", method: .post, encoding: JSONEncoding.init(options: []), headers: headers).responseData(completionHandler: {feedback in
        guard feedback.result.value != nil else {
            print("Error: did not receive data", print("request \(request) feedback \(feedback)"))
            return
        }
        guard feedback.result.error == nil else {
            print("error calling POST on list_folder")
            print(feedback.result.error)
            return
        }
        if let JSON = feedback.result.value {    
            let dataString = String(data: JSON, encoding: .utf8)  
        }
        if let IMAGE = feedback.result.value {
            sharedDataAccess.fnData(index2seek: 0, fnData:  feedback.result.value! as Data)
            NotificationCenter.default.post(name: Notification.Name("nextACtion"), object: nil, userInfo: nil)
        }
    })