Alamofire请求和自定义NSURLRequest之间的区别

时间:2016-05-03 12:49:08

标签: ios swift http post alamofire

我使用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方法相比,我做错了什么?

1 个答案:

答案 0 :(得分:1)

您以["username": "myname", "password": "mypass"]此格式和自定义请求"username=myname&password=mypass"以此格式传递alamofire中的参数。所以两者都有区别。

第一个是json格式,第二个是字符串格式。

因此,从您的自定义请求以json格式发送数据。获取dictionary个参数,然后使用NSJSONSerialization.dataWithJSONObject

将其转换为数据

希望这会有所帮助:)