我使用Alamofire和自定义方法将NSURLMutableRequest
发布到WebAPI,如:
Alamofire
Alamofire.request(.POST, "http://www.webapi.com?path=Login", parameters: ["username": "myname", "password": "mypass"]).responseJSON { response in
// do something with returned data ...
}
自定义
let request = NSMutableURLRequest(URL: NSURL(string:"http://www.webapi.com?path=Login")!)
let bodyData = "username=myname&password=mypass"
request.HTTPBody = bodyData.dataUsingEncoding(NSUTF8StringEncoding)
request.HTTPMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
let session = NSURLSession(configuration: NSURLSessionConfiguration.defaultSessionConfiguration())
session.dataTaskWithRequest(request) { (data, response, error) -> Void in
// do something with returned data...
}.resume()
我通过Alamofire方法获得了正确的结果,但不是我自己的方法。
与Alamofire post方法相比,我做错了什么?
答案 0 :(得分:1)
您以["username": "myname", "password": "mypass"]
此格式和自定义请求"username=myname&password=mypass"
以此格式传递alamofire中的参数。所以两者都有区别。
第一个是json格式,第二个是字符串格式。
因此,从您的自定义请求以json格式发送数据。获取dictionary
个参数,然后使用NSJSONSerialization.dataWithJSONObject
希望这会有所帮助:)