iOS http POST 使用 Alamofire

Posted

技术标签:

【中文标题】iOS http POST 使用 Alamofire【英文标题】:iOS http POST using Alamofire 【发布时间】:2015-10-31 16:35:37 【问题描述】:

我需要一些帮助,使用 Alamofire 通过 Twilio 的 API 使用用户名/密码对网页进行 POST。

我之前使用过 GitHub 的 SwiftRequest,但它不支持 Swift 2.0。

我使用的代码(使用 SwiftRequest)是:

        var data = [
            "To" : mobileInput.text as String!,
            "From" : twiliosMSFrom,
            "Body" : String(code) as String
        ]

        var swiftRequest = SwiftRequest()

        swiftRequest.post("https://api.twilio.com/2010-04-01/Accounts/\(twilioUsername)/Messages",
            auth: ["username" : twilioUsername, "password" : twilioPassword],
            data: data,
            callback: err, response, body in
                if err == nil 
                    println("Success: \(response)")
                 else 
                    println("Error: \(err)")
                
            )

如何将其翻译为使用 Alamofire?

我已尝试寻找解决方案,但找不到任何解决方案。

谁能帮帮我?

【问题讨论】:

【参考方案1】:

试试这样的:

Alamofire.request(.POST, "https://api.twilio.com/2010-04-01/Accounts/\(twilioUsername)/Messages", parameters: ["username": twilioUsername, "password" : twilioPassword])
     .responseJSON  response in
         print(response.request)
         print(response.response)
         print(response.result)

         if let JSON = response.result.value 
             print("Did receive JSON data: \(JSON)")
         
         else 
             print("JSON data is nil.")
         

      

你一定要查看他们的 github 页面 - https://github.com/Alamofire/Alamofire

【讨论】:

返回成功,但您的答案不包括数据部分。如何确保也发送数据? 很抱歉不够精确。我的意思是必须在 POST 中发送数据部分才能获得结果中的必要数据。我已经测试了你的代码,它响应的 JSON 数据是 nil,正如预期的那样。【参考方案2】:

我想通了。

使用 Alamofire 的解决方案:

        let data = [
            "To" : mobileInput.text as String!,
            "From" : twilioSMSFrom,
            "Body" : String(code) as String
        ]

        Alamofire.request(.POST, "https://\(twilioUsername):\(twilioPassword)@api.twilio.com/2010-04-01/Accounts/\(twilioUsername)/Messages", parameters: data)
            .responseJSON  response in
                print(response.request)
                print(response.response)
                print(response.result)
        

【讨论】:

【参考方案3】:

这是 SWIFT 2.2 VERSION 的最新答案 试试这个对你有帮助....

参数:-

    let params : Dictionary = ["YourKEY" : "YourVALUE"]

Post Request_Form:-

Alamofire.request(.POST,"Post Your Url HERE", parameters: params, encoding:.JSON).responseJSON
        
          response in switch response.result 
            
                  case .Success(let JSON):
         //   print("Success with JSON: \(JSON)")
            //converting json into NSDictionary

            let response = JSON as! NSDictionary
            print(response)

            var array = NSMutableArray!()
            //converting respose form into NSMutableArray formate
            array = response.valueForKey("countryList")as? NSMutableArray

            //example if there is an id
          //  let userId = response.objectForKey("id")!

        case .Failure(let error):
            print("Request failed with error: \(error)")
            
    

【讨论】:

以上是关于iOS http POST 使用 Alamofire的主要内容,如果未能解决你的问题,请参考以下文章

PhoneGap Ionic 项目未在 iOS 设备上执行 $http.post

iOS使用CocoaHttpServer搭建本地http服务,并实现简单的GET与POST请求

iOS开发 GET、POST请求方法(NSURLConnection篇)

使用 io.Pipe 从 exec.command 获取输出以进行 http post

iOS 应用 http post/get 请求

在 iOS 上发送 HTTP POST 请求