swift中的Alomofire POST请求
问题描述:
我在swift 2.0项目中使用了下面的代码。尽管我添加了“导入Alamofire”,但我无法添加Alamofire.request。我必须创建Alamofire的对象,然后通过它访问。swift中的Alomofire POST请求
这是我如何创建对象:
let manager = Alamofire.Manager.sharedInstance
manager.request(NSURLRequest(URL: NSURL(string: "http://httpbin.org/get")!))
let parameters = ["foo": "bar"]
manager.request(.POST, "url", parameters: parameters)
.responseJSON { request, response, json, error in
print("request: \(request)")
}
我是新来的都Alamofire快捷。任何人都可以告诉我如何在完成处理程序中获得上述代码的响应,以及为什么我不能使用Alamofire.request而不是使用manager.request。
答
请求并不总是JSON请检查您的要求:
示例如下使用Alamofire与斯威夫特2:
GET - JSON
Alamofire.request(.GET, "http://api.androidhive.info/contacts/", parameters: nil, encoding: .JSON, headers: nil).responseJSON { (req, res, json) -> Void in
print("\(res?.allHeaderFields)")
print("\(json.value!)")
}
POST - 没有JSON
Alamofire.request(.POST, "http://httpbin.org/get", parameters: ["foo": "bar"], encoding: .URL, headers: nil).response { (req, res, data, error) -> Void in
print(res)
print(data)
let dataString = NSString(data: data!, encoding:NSUTF8StringEncoding)
print(dataString)
}
答
请参阅我的文章的方法和希望它可以帮助
POST方法:
/**
** POST Method for calling API
* Services gateway
* Method get response from server
* @parameter -> requestObject: request josn object ,apiName: api endpoint
* @returm -> void
* @compilationHandler -> success: status of api, response: respose from server, error: error handling
**/
static func getDataWithObject(requestObject: NSDictionary, apiName : NSString,
completionHandler:
(success : Bool, response : NSDictionary, error : ErrorType?) -> Void) {
// Make Url
let url = NSURL(string: apiName as String)
let request = NSMutableURLRequest(URL: url!)
request.HTTPMethod = "POST"
//request.setValue("application/json", forHTTPHeaderField: "Content-Type")
// Call the method to request and wait for the response
// @param ->
// @return ->
Alamofire.request(.POST, url!, parameters:requestObject as? [String : AnyObject], encoding: .JSON)
.responseJSON {responseRequest, responseResponse, responseResult in
// Switch for Success or Error
switch responseResult {
// If the API return succesfull response
case .Success(let data):
let data_ar = data as! NSDictionary
print(data_ar)
// Get the Status if 0 then error if 1 then succes
// From our server side
if let str = data_ar.valueForKey("OK") as? Bool {
// Check if the status is OK and no error from
// our server side
if (str) {
print("Response from Server %@", data_ar)
// Cast the response and pss to handler
// To notify
completionHandler(success: true, response:data_ar
, error:responseResult.error)
} else {
print("Error from Our Server %@", data_ar)
let str = data_ar.valueForKey("message") as! NSString
self.showAlertView(str, title: "Error From Server")
}
}
case .Failure(let data, let error):
print("Request failed with error: \(error)")
print(data)
print((error as! NSError).localizedDescription)
self.showAlertView((error as! NSError).localizedDescription, title: "Error From Server")
}
}
}
+0
不错的工作Raheel! –
谢谢哥哥。你的代码对我来说非常完美。你能不能让我知道为什么我不能在我的xcode中自动完成Alomofire.request,但是如果我复制你的代码,我没有收到任何错误。为了自动完成,我必须添加一个Alomofire对象,然后继续。 –
你已经创建了Alamofire的实例,并且你已经创建了一个URL请求,不需要这样做。 Alamofire会照顾它。保持它@ user3730935 –
但没有,我不能自动完成我的编码! :( –