2014-10-30 106 views
3

我正面臨AFNetworking 2.0(在Swift上編碼)的問題。圖書館的GET方法似乎對我來說很完美。雖然,POST方法返回我錯誤。錯誤是錯誤的用戶名/密碼。從第一次看起來似乎是身份驗證問題,但實際上當我嘗試Postman(REST客戶端)上的POST請求時效果很好。AFNetworking 2.0 POST請求不能正常工作

所以我在做什麼:

配置:

var policy : AFSecurityPolicy = AFSecurityPolicy(); 
policy.allowInvalidCertificates = true; 

self.client = AFHTTPRequestOperationManager(baseURL: self.basicUrl) 
self.client!.operationQueue = NSOperationQueue.mainQueue() 
self.client!.securityPolicy = policy 

var responseSerializer : AFJSONResponseSerializer = AFJSONResponseSerializer() 

self.client!.responseSerializer = responseSerializer 

var requestSerializer : AFJSONRequestSerializer = AFJSONRequestSerializer() 
requestSerializer.setValue("application/json", forHTTPHeaderField: "Accept") 

self.client!.requestSerializer = requestSerializer 

和我的要求

internal func loginUser(email : String, password : String, onCompletion : WebClientLoginResponse) -> Void 
{ 
    var params : Dictionary = ["email":email, "pass":password] 

    self.client!.POST("login", parameters: params, success: { (operation : AFHTTPRequestOperation!, response : AnyObject!) -> Void in 

     var finalResponse : Dictionary = Dictionary<String, String>() 

     finalResponse = response as Dictionary 

     onCompletion(true, nil, nil, nil) 

     }) { (operation : AFHTTPRequestOperation!, error : NSError!) -> Void in 

      println("Error \(error.description) \(operation.responseObject) ") 

      onCompletion(false, nil, nil, nil) 
    } 
} 

你覺得什麼人?我錯過了什麼?

謝謝!

回答

2

您的服務器是否需要JSON編碼參數?請參閱公認的answer to this question

此外,請考慮使用AFNetworking的Swift版本,AlamoFire,它具有更容易(IMHO)的方式來設置編碼格式。

+1

嘿託德首先感謝您的回答。看來問題在於我還設置了requestSerializer。 (不僅是responseSerializer)。看來,如果你分配他們兩個,POST不起作用(出於某種奇怪的原因)。因此,當我刪除了配置requestSerializer的行時,POST正常運行!我不知道爲什麼! – Tzegenos 2014-10-30 23:54:43

+2

哦,我沒有注意到!似乎可能是AFNetworking中的一個錯誤。很高興現在正在工作。 – 2014-10-31 00:05:57

+1

@Tzegenos謝謝,刪除這些行解決了我的問題! – NBoymanns 2015-09-08 14:49:36