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) 
} 
+0

谢谢哥哥。你的代码对我来说非常完美。你能不能让我知道为什么我不能在我的xcode中自动完成Alomofire.request,但是如果我复制你的代码,我没有收到任何错误。为了自动完成,我必须添加一个Alomofire对象,然后继续。 –

+0

你已经创建了Alamofire的实例,并且你已经创建了一个URL请求,不需要这样做。 Alamofire会照顾它。保持它@ user3730935 –

+0

但没有,我不能自动完成我的编码! :( –

请参阅我的文章的方法和希望它可以帮助

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! –