2015-09-06 83 views
1

我得到使用AFNetworking 2.0同时使用雨燕语言POST方法,因为身体没有编码,它应该是一个错误,这是我的代码:AFNetworking后参数不编码

let manager = AFHTTPRequestOperationManager() 
manager.securityPolicy.allowInvalidCertificates = true; 

let reqSerializer: AFJSONRequestSerializer = AFJSONRequestSerializer() 
reqSerializer.setValue("T-Rex", forHTTPHeaderField: "User-Agent") 
reqSerializer.setValue("no-cache", forHTTPHeaderField: "Cache-Control") 
reqSerializer.setValue("apikey", forHTTPHeaderField: "Authorization") 
manager.requestSerializer = reqSerializer 

let resSerializer: AFJSONResponseSerializer = AFJSONResponseSerializer() 
resSerializer.acceptableContentTypes = ["text/html", "application/json"] 
manager.responseSerializer = resSerializer; 
let params: NSDictionary = ["userName" : userName, "passWord" : passWord] 

manager.POST(Constants.apiURL.url + "users/login", 
    parameters:params, 
    success: { (operation: AFHTTPRequestOperation!, responseObject: AnyObject!) in 
     NSLog("Success! Response is \(responseObject.description)") 
    }, 
    failure: { (operation: AFHTTPRequestOperation!, error: NSError!) in 
     NSLog("Failure! Error is: \(error.localizedDescription)") 
}) 

调试请求我得到:

POST 'http://api.cc/users/login': { 
    Accept = "application/json"; 
    "Accept-Language" = "pt;q=1, fr;q=0.9, en;q=0.8"; 
    Authorization = apikey; 
    "Cache-Control" = "no-cache"; 
    "Content-Type" = "application/json"; 
    "User-Agent" = "T-Rex"; 
} {"passWord":"123","userName":"123"} 

和我的服务器答案:

400 'http://api.cc/users/login' [0.7545 s]: { 
    Age = 0; 
    Connection = "keep-alive"; 
    "Content-Length" = 83; 
    "Content-Type" = "application/json"; 
    Date = "Sun, 06 Sep 2015 01:03:00 GMT"; 
    Server = "nginx/1.8.0"; 
    Via = "1.1 varnish-v4"; 
    "X-Varnish" = 950329; 
} {"error":true,"message":"Required field(s) userName, passWord is missing or empty"} 

我不知道WH y中的用户名和密码可以像这样编码:

{"passWord":"123","userName":"123"} 

,而不是这样的:

{"passWord:123&userName":123"} 

回答

0

应该AFHTTPRequestSerializer而不是AFJSONRequestSerializer

问题解决。