使用NSMutableRequest和Alamofire的参数

时间:2015-06-21 00:27:20

标签: ios swift ios8 alamofire

我尝试使用AlamoFire在swift上的应用程序上向我的API发出请求。我需要使用这样的自定义标题,所以我选择使用NSURLRequest方法,这是我的代码:

let URL = NSURL(string: "\(APIUrl)/sessions")!
let mutableURLRequest = NSMutableURLRequest(URL: URL)
mutableURLRequest.HTTPMethod = "POST"

let parameters = ["oauth_token": OAuthToken]
var JSONSerializationError: NSError? = nil

mutableURLRequest.HTTPBody = NSJSONSerialization.dataWithJSONObject(parameters, options: nil, error: &JSONSerializationError)
mutableURLRequest.addHeadersInDictionary(self.defaultHeaders)

Alamofire.request(mutableURLRequest)
         .validate(statusCode: 200..<300)
         .responseJSON { [weak self] request, response, JSON, error in
             println(request.description)
             if let strongSelf = self, response = response {
                 if error == nil {
                     let jsonResult = JSON as! Dictionary<String, AnyObject>
                     strongSelf.setAuthToken(jsonResult[JsonConstants.AuthToken] as! String)
                     strongSelf.defaultHeaders["Authorization"] = "Token token=\(strongSelf.authToken()!)"
                     success?()
                 } else {
                     println("Failed with \(response.statusCode)")
                     println(error!)
                     failure?()
                 }
             } else  {
                 println(error!)
                 failure?()
             }
     }

我在我的API上完全收到了请求,但在我的日志中,我看到发送的参数与我发送的参数完全不同:

Parameters: {"oauth_token"=>"token", "session"=>{"oauth_token"=>"token"}}

为什么AlamoFire会在我的HTTP Body中添加session : []参数?有没有办法清理这些参数只是为了将所需信息发送到服务器,或者至少删除会话参数之外的oauth_token

此外,如果我在未添加HTTPBody的情况下发送了请求,我将在服务器上收到session参数为空:

Parameters: {"session"=>{}}

提前致谢!

1 个答案:

答案 0 :(得分:0)

Alamofire没有附加session参数。您必须将其添加到逻辑中的某个位置(示例中未显示)。另外,您的addHeadersInDictionary方法在做什么?