用 alamofire 快速发送获取请求

Posted

技术标签:

【中文标题】用 alamofire 快速发送获取请求【英文标题】:Send get request with alamofire in swift 【发布时间】:2020-05-06 15:49:00 【问题描述】:

当我发送请求时,请求发送,但我发送的参数在服务器上无法识别 ‌但在邮递员中,请求没问题并且工作正常

这是我在客户端的回复:'国家是必需的'

这是我的服务器端代码(nodejs-express):

const app = express()
    app.use(bodyparser.urlencoded( extended: false ));
    app.use(bodyparser.json( type: 'application/json' ))
    app.use(expressvalidator())
    app.get('/cities', (req, res) => 
        req.checkBody('country', 'country is required').notEmpty()
        let errors = req.validationErrors()
        if (errors) 
            return res.status(422).json(
                message: errors[0].msg
            )
        
        var cities = require('country-city').getCities(req.body.country);
        console.log(cities)
        return res.json( cities: cities )
    )

和我的客户端代码(swift):

let params2 : Parameters = ["country" : "China"]
    Alamofire.request("http://172.20.10.3:4000/cities",method : .get, parameters: params2, encoding: URLEncoding.default).responseJSON  (jsonData) in
        do 
            print(jsonData)
        catch 

        
    

【问题讨论】:

你试过在服务器端调试它吗?服务器中的请求是什么样的? 服务器端没问题,我的朋友。当我改变双方的方法来发布工作正常但在获取客户端有问题@RenzoTissoni 不是我的意思。通过查看来自服务器端的请求,您可能会发现来自客户端的请求是否(以及可能如何)格式错误。 【参考方案1】:

您使用 URLEncoding.default,数据将添加到 URL 中,要使用您设置的参数创建 JSON,您必须使用选项 JSONEncoding.default。

【讨论】:

以上是关于用 alamofire 快速发送获取请求的主要内容,如果未能解决你的问题,请参考以下文章

如何在快速向 alamofire 发送请求之前安排数组

在 post 方法中发送标头

保存并重新发送 Alamofire 请求

在 swift 3 中下载文件时,alamo fire 中的进度视图不会更新

Alamofire 2 不允许 SSL 连接 Instagram API

将 alamofire json 响应转换为变量