使用 alamofire 发出 POST 请求

Make POST request with alamofire

我是 swift 应用程序。我想用 alamofire

创建一个请求 POST

要求

$ curl \
          -H 'Accept: application/json' \
          -H 'Content-Type: application/json' \
          -X POST -d '{ "user": { "email": "user@example.com", "password": "1234" } }' \
          http://localhost:3000/users/sign_in 

我的代码

let crendetials = ["user": ["email": "bolo@me.com", "password": "PASSWORD"]]
              var postsEndpoint: String = "http://localhost:3000/users/sign_in"
             Alamofire.request(.POST, postsEndpoint, parameters: crendetials, encoding: .JSON)
                  .responseJSON { (request, response, data, error) in
                      if let anError = error
                      {
                          // got an error in getting the data, need to handle it
                          println("error calling POST on /users/sign_in")
                          println(error)
                      }
                      else if let data: AnyObject = data
                      {
                          // handle the results as JSON, without a bunch of nested if loops
                          let post = JSON(data)
                          // to make sure it posted, print the results
                          println(data)
                      }
      }

我遇到了这个错误

request: <NSMutableURLRequest: 0x170208be0> { URL: http://localhost:3000/users/sign_in } || response: nil || object: Optional(<>) || error: Optional(Error Domain=NSURLErrorDomain Code=-1004 "The operation couldn’t be completed. (NSURLErrorDomain error -1004.)" UserInfo=0x1740f6900 {NSErrorFailingURLStringKey=http://localhost:3000/users/sign_in, NSErrorFailingURLKey=http://localhost:3000/users/sign_in, _kCFStreamErrorDomainKey=1, _kCFStreamErrorCodeKey=61, NSUnderlyingError=0x17405c500 "The operation couldn’t be completed. (kCFErrorDomainCFNetwork error -1004.)"})

如果您使用真实的 iPhone 进行测试,您应该将主机从 localhost 更改为您的 Mac 的 IP 地址,并确保您 iPhone和 Mac 在同一个无线网络中。

如果您使用模拟器进行测试,它应该可以工作。也许您可以将 localhost 更改为 127.0.0.1

错误是由于错误url造成的。您可以在设备中的 Safari 中进行测试,看看它是否有效。