如何使用alamofire快速发布带有json顺序的请求?

制造者

我需要为我的应用程序提供付款方式,并且必须发布带有JSON数据的请求才能与API进行通信。一切对我来说似乎都是正确的。我在代码中找不到任何错误,但是我认为JSON没有按顺序发布。这重要吗?因为响应表示失败,但我找不到其他东西。如果JSON顺序很重要,我该怎么做?我是新手,请帮助我。这是我的代码:

 func mainRequestForPayment() {

      )

        let headers: HTTPHeaders = [
            "accept": "application/json",
            "content-type": "application/json",
            "authorization": "\(self.authValue)",
            "x-iyzi-rnd": "\(self.randomString)",
            "cache-control": "no-cache"
        ]


        let url = "MY_URL"

        let parameters: [String: Any] = [
        "locale": "tr",
        "conversationId": "123456789",
        "price": "1.1",
        "paidPrice": "1.1",
        "installment": 1,
        "paymentChannel": "WEB",
        "basketId": "B67832",
        "paymentGroup": "PRODUCT",
        "paymentCard": [
            "cardHolderName": "CARD_HOLDER_NAME",
            "cardNumber": "CARD_NUMBER",
            "expireYear": "CARD_YEAR",
            "expireMonth": "01",
            "cvc": "123",
            "registerCard": 0
        ],
        "buyer": [
            "id": "BY789",
            "name": "John",
            "surname": "Doe",
            "identityNumber": "74300864791",
            "email": "[email protected]",
            "gsmNumber": "+905350000000",
            "registrationAddress": "Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1",
            "city": "Istanbul",
            "country": "Turkey",
            "zipCode": "34732",
            "ip": "85.34.78.112"
        ],
        "shippingAddress": [
            "address": "Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1",
            "zipCode": "34742",
            "contactName": "Jane Doe",
            "city": "Istanbul",
            "country": "Turkey"
        ],
        "billingAddress": [
            "address": "Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1",
            "zipCode": "34742",
            "contactName": "Jane Doe",
            "city": "Istanbul",
            "country": "Turkey"
        ],
        "basketItems": [
            [
                "id": "BI101",
                "price": "0.3",
                "name": "Binocular",
                "category1": "Collectibles",
                "category2": "Accessories",
                "itemType": "PHYSICAL"
            ],
            [
                "id": "BI102",
                "price": "0.5",
                "name": "Game code",
                "category1": "Game",
                "category2": "Online Game Items",
                "itemType": "VIRTUAL"
            ],
            [
                "id": "BI103",
                "price": "0.2",
                "name": "Usb",
                "category1": "Electronics",
                "category2": "Usb / Cable",
                "itemType": "PHYSICAL"
            ]
        ],
        "currency": "TRY"
            ]


        Alamofire.request(url, method: .post, parameters: parameters , encoding: JSONEncoding.default, headers: headers)
            .responseJSON { (response) in
                print(parameters)
                switch response.result {
                case .success(let value):
                    let swiftyJson = JSON(value)
                    print ("return as JSON using swiftyJson is: \(swiftyJson)")
                case .failure(let error):
                    print ("error: \(error)")
                }

        }


    }

我看不到我的错在哪里?再有什么办法可以在发布请求中下订单?谢谢大家

我得到那个回应:

return as JSON using swiftyJson is: {
  "conversationId" : "123456789",
  "locale" : "tr",
  "errorCode" : "1000",
  "status" : "failure",
  "systemTime" : 1579858355103,
  "errorMessage" : "Invalid signature"
}
Jon Shier

JSON顺序通常并不重要,因为JSON规范并未将其定义为JSON对象的要求,但是某些设计欠佳的后端确实需要它。您确实需要检查与之通信的后端的要求。

此外,Swift的Dictionary类型是任意排序的,并且该顺序可能在应用程序运行之间以及用于编译代码的Swift版本之间改变。

最后,Swift的JSONEncoder和Apple的JSONSerialization类型都无法提供要求严格订购的方法。最多JSONSerialization提供.sortedKeys选项,这将为您提供有保证的(字母顺序)顺序,但可能不是您在其中声明参数的顺序。Encoder如果您有Codable类型(我建议使用它而不是SwiftyJSON),则使用Alternative可以给出您可以更好地保证订单秩序,但是只有在后端需要时,才应该真正在乎。

顺便说一句,我建议您使用静态HTTPHeader属性作为HTTPHeaders值,而不是使用原始字符串,这样会更加方便。例如:

let headers: HTTPHeaders = [.accept("application/json"),
                            .contentType("application/json")]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用Ansible发布带有参数的Json文件

来自分类Dev

iOS快速发布带有二进制正文的请求

来自分类Dev

如何每次Jmeter都使用不同的文件多次发布带有文件上传的http请求

来自分类Dev

如何在asp.net 4.0中发布带有Web请求的文件

来自分类Dev

使用Rails发布带有复选框的表单时,请求中的哈希键重复

来自分类Dev

在后端使用laravel发布带有react的请求ajax

来自分类Dev

Python发布带有请求的cookie

来自分类Dev

带有嵌套JSON参数的Alamofire发布请求

来自分类Dev

如何发布带有curl的json字符串,其中包含需要转义的字符?

来自分类Dev

Polymer:使用application / json contentType发布带有文件上传的铁表格

来自分类Dev

如何发布带有本地附件的Slack格式的邮件?

来自分类Dev

json使用alamofire快速发布嵌套对象

来自分类Dev

发布带有广告的Android应用

来自分类Dev

php:发布带有图像的帖子

来自分类Dev

如何快速在Alamofire中打印来自发布请求的响应的json内容?

来自分类Dev

泽西岛客户发布带有x-www-form-urlencoded失败的请求失败

来自分类Dev

发布带有表单数据的请求,在Mocha测试中引发400错误

来自分类Dev

如何快速发布嵌套的 JSON 正文请求

来自分类Dev

React应用中的Axios 带有表单数据的图像发布带有空正文的请求

来自分类Dev

快速发布json请求

来自分类Dev

Retrofit2 发布带有字段名称的 JSON

来自分类Dev

如何使用Rails发送带有ajax发布请求的表单

来自分类Dev

如何使用带有React Hooks的axios来发布请求?

来自分类Dev

如何使用Rails发送带有Ajax发布请求的表单

来自分类Dev

如何在分组列表中发布带有已编辑项目的模型?

来自分类Dev

如何npm发布带有单独的templateUrl html文件的Angular2组件?

来自分类Dev

如何发布带有commonjs和es6版本的NPM模块?

来自分类Dev

如何正确发布带有字幕的html5视频[seo]

来自分类Dev

如何在Windows应用商店中发布带有下载链接的桌面应用程序?

Related 相关文章

  1. 1

    如何使用Ansible发布带有参数的Json文件

  2. 2

    iOS快速发布带有二进制正文的请求

  3. 3

    如何每次Jmeter都使用不同的文件多次发布带有文件上传的http请求

  4. 4

    如何在asp.net 4.0中发布带有Web请求的文件

  5. 5

    使用Rails发布带有复选框的表单时,请求中的哈希键重复

  6. 6

    在后端使用laravel发布带有react的请求ajax

  7. 7

    Python发布带有请求的cookie

  8. 8

    带有嵌套JSON参数的Alamofire发布请求

  9. 9

    如何发布带有curl的json字符串,其中包含需要转义的字符?

  10. 10

    Polymer:使用application / json contentType发布带有文件上传的铁表格

  11. 11

    如何发布带有本地附件的Slack格式的邮件?

  12. 12

    json使用alamofire快速发布嵌套对象

  13. 13

    发布带有广告的Android应用

  14. 14

    php:发布带有图像的帖子

  15. 15

    如何快速在Alamofire中打印来自发布请求的响应的json内容?

  16. 16

    泽西岛客户发布带有x-www-form-urlencoded失败的请求失败

  17. 17

    发布带有表单数据的请求,在Mocha测试中引发400错误

  18. 18

    如何快速发布嵌套的 JSON 正文请求

  19. 19

    React应用中的Axios 带有表单数据的图像发布带有空正文的请求

  20. 20

    快速发布json请求

  21. 21

    Retrofit2 发布带有字段名称的 JSON

  22. 22

    如何使用Rails发送带有ajax发布请求的表单

  23. 23

    如何使用带有React Hooks的axios来发布请求?

  24. 24

    如何使用Rails发送带有Ajax发布请求的表单

  25. 25

    如何在分组列表中发布带有已编辑项目的模型?

  26. 26

    如何npm发布带有单独的templateUrl html文件的Angular2组件?

  27. 27

    如何发布带有commonjs和es6版本的NPM模块?

  28. 28

    如何正确发布带有字幕的html5视频[seo]

  29. 29

    如何在Windows应用商店中发布带有下载链接的桌面应用程序?

热门标签

归档