alamofire post 方法中的 response.result.value 为 nil

Posted

技术标签:

【中文标题】alamofire post 方法中的 response.result.value 为 nil【英文标题】:response.result.value in alamofire post method is nil 【发布时间】:2017-07-06 16:55:57 【问题描述】:
        let parametersDictionary = [
        "email" : "name@gmail.com",
        "password" : "password"
    ]
    Alamofire.request("http://nanosoftech.com/store/user_check", method: .post, parameters: (parametersDictionary as NSDictionary) as? Parameters , encoding: JSONEncoding.default, headers: nil).responseJSON  response in
        print("response:", response.result.value)
    

我正在使用 post 方法 api 并且上面的代码不起作用。我得到零回应。但是这个 url 在 postman 和 android studio 中也可以正常工作。这个问题背后的原因是什么?

【问题讨论】:

您需要在我认为的请求正文中添加您的参数,检查这个答案***.com/questions/44484772/…也许可以帮助您 是的,我已经在那里添加了参数字典 代码(parametersDictionary as NSDictionary) as? Parameters 可能给你nil 我仅将其编辑为 parametersDictionary。还是行不通。您可以在邮递员中查看此网址。里面还好但是当我在代码中使用它时,它给出了零响应 @Sptibo 使用 GET 而不是 POST 并且必须工作 【参考方案1】:

您的网址仅在使用带有 url 编码的表单请求时才有效

尝试使用这个,就像 GitHub 上的 documented

Alamofire.request("http://nanosoftech.com/store/user_check", method: .post, parameters: parametersDictionary , encoding: URLEncoding.default)

如果此编码不起作用,请尝试encoding: URLEncoding.httpBody

【讨论】:

@Sptibo 刚刚注意到您发送的是 http 调用,而不是 https 调用。您将只需要执行 https,否则您的应用将被应用商店拒绝。从 2017 年开始,http 调用只允许在UIWebView @Sptibo 我刚刚尝试使用"email" : "name@email.com", "password": "haha" 发送帖子请求并没有得到回应 但我一直在 get 方法中使用 http url,并且运行良好。如果我用另一个 http url 测试这段代码并发布一些表单数据,那么它就可以工作。但是这个网址给了我零回应。 @Sptibo 看看我更新的屏幕截图。您的网址确实返回 nil 您已发送原始数据。但我会发送表单数据。那是一样的吗?尝试发送表单数据并查看响应。【参考方案2】:

就像下面这样写。它对我有用

Alamofire.request("http://era.com.bd/UserSignInSV", method: .post,parameters:["uname":txtUserId.text!,"pass":txtPassword.text!]).responseJSON(responseData) -> Void in
        if((responseData.result.value != nil))

            let jsonData = JSON(responseData.result.value)

        
    

【讨论】:

它正在运行的实时项目中工作。我想你应该看到 json 响应..你能告诉我 json 响应吗... 使用 get 检查浏览器,因为浏览器不响应帖子:nanosoftech.com/store/… 我已经在邮递员中测试了这个网址,检查了表单数据并在正文中填写“电子邮件”和“密码”并发送它。它在邮递员中运行良好。 您好,亲爱的,我发现 json 响应我的 json 响应来自我在 xcode 中使用相同代码打印的代码。是 json 看起来像下面这样。如果仍然觉得问题,请分享您的代码...:::jsonData : "loginNodes" : [ "errorCode" : "1", "errorMessage" : "未经授权的用户 ID。登录被拒绝。" ]

以上是关于alamofire post 方法中的 response.result.value 为 nil的主要内容,如果未能解决你的问题,请参考以下文章

Alamofire中的“调用中的额外参数方法”

Alamofire 从 POST 获得响应

Alamofire发布请求错误调用中的额外参数“方法”

Swift 中的 Alamofire .post。 “调用结果未使用,但产生‘DataRequest’

Alamofire4在使用方法时抛出“额外参数方法”:.post

Alamofire POST 方法不会将值传递给 url