我有一个工作场景,使用postman 传递URL参数.现在,当我试图通过Swift中的Alamofire实现时,它不起作用.

您将如何在Alamofire中创建此url?

    _url = "http://localhost:8080/"
    let parameters: Parameters = [
        "test": "123"
        ]

    Alamofire.request(_url,
                      method: .post,
                      parameters: parameters,
                      encoding: URLEncoding.default,
                      headers: headers

推荐答案

问题是你用的是URLEncoding.default.Alamofire根据您使用的HTTP methodURLEncoding.default进行不同的解释.

对于GETHEADDELETE请求,URLEncoding.default将参数编码为查询字符串并将其添加到URL,但对于任何其他方法(如POST),参数将编码为查询字符串并作为HTTP请求的主体发送.

为了在POST请求中使用查询字符串,需要将encoding参数更改为URLEncoding(destination: .queryString).

您可以看到关于Alamofire如何处理请求参数here的更多细节.

您的代码应该如下所示:

   _url = "http://localhost:8080/"
    let parameters: Parameters = [
        "test": "123"
        ]

    Alamofire.request(_url,
                      method: .post,
                      parameters: parameters,
                      encoding: URLEncoding(destination: .queryString),
                      headers: headers)

Swift相关问答推荐

SwiftUI状态更新

在Xcode SWIFT中运行用Ionic编写的函数

在Swift中,将秒设置为0也等于将1添加到分钟

如何绑定环境变量ios17

如何从 RC 加载场景作为 ModelEntity 而不是普通实体?

如何在不提交到应用store 的情况下在本地运行我的应用

MainActor 隔离可变存储属性为何会出现可发送错误?

当使用 CGFloat 而不是数字文字时,为什么 node 的位置会发生变化?

将数据附加到 Firebase 实时数据库后,NavigationLink 将我重定向到上一个视图

如果没有标记,则为 Swift 预处理器

FirebaseStorage:如何删除目录

如何使用 Swift/iOS 为人类书写的笔画制作动画?

MKAnnotation Swift

在 Swift 框架中加载资源(例如故事板)

Swift中字节数组的NSData

使用相机进行人脸检测

类型myViewController不符合 Swift 中的协议 UIPIckerDataSource

如何停止 NSTimer.scheduledTimerWithTimeInterval

如何快速将弹出框调整为表格视图中内容的大小?

使用 swift IOS 使 UIBarButtonItem 消失