Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 已部署+;Swift用户认证_Ios_Swift_Alamofire_Deployd - Fatal编程技术网

Ios 已部署+;Swift用户认证

Ios 已部署+;Swift用户认证,ios,swift,alamofire,deployd,Ios,Swift,Alamofire,Deployd,我是斯威夫特的新手。我想验证一个用户。我使用“已部署”作为我的服务器。这是API的文档所说的: HTTP 要验证用户身份,请向发送POST请求/使用用户名登录 以及请求正文中的密码属性 发布/用户/登录 {“用户名”:“约翰史密斯”,“密码”:“密码”} 我正在使用Alamofire解析JSON数据。这是我的密码: let user = "root" let password = "root" // this is a testing user i

我是斯威夫特的新手。我想验证一个用户。我使用“已部署”作为我的服务器。这是API的文档所说的:

HTTP

要验证用户身份,请向发送POST请求/使用用户名登录 以及请求正文中的密码属性

发布/用户/登录

{“用户名”:“约翰史密斯”,“密码”:“密码”}

我正在使用Alamofire解析JSON数据。这是我的密码:

        let user = "root"
        let password = "root"
        // this is a testing user i've created in deployd's dashboard.

        let credential = NSURLCredential(user: user, password: password, persistence: .ForSession)

        Alamofire.request(.POST, "http://localhost:2406/users/login/\(user)/\(password)")
            .authenticate(usingCredential: credential)
            .response { request, response, _, error in
                println(response)
        }
这是来自Xcode控制台的响应:

Optional(<NSHTTPURLResponse: 0x7fdd906dc3a0> { URL: http://localhost:2406/users/login/root/root } { status code: 400, headers {
    Connection = "keep-alive";
    "Content-Type" = "application/json";
    Date = "Thu, 06 Aug 2015 13:01:54 GMT";
    "Transfer-Encoding" = Identity; } })
可选({URL:http://localhost:2406/users/login/root/root }{状态代码:400,标题{
连接=“保持活动”;
“内容类型”=“应用程序/json”;
日期=“2015年8月6日星期四13:01:54 GMT”;
“传输编码”=标识;}})

我知道我做这件事的方式完全错误

您使用的是http身份验证(头),但服务器/api并没有要求您这样做(它实际上说400-错误的请求-因此应该指出api的错误使用)

相反,您必须在请求体中提供参数,因为规范规定它应该是您提供给服务器的参数。为此,请使用不同的Alamofire方法,允许您包含参数:

let parameters = ("username" : user, "password" : password)
Alamofire.request(.POST, "http://localhost:2406/users/login", parameters: parameters)
并从调用中删除。身份验证:)

希望有帮助

不用担心,很乐意帮忙:)享受吧!