【问题标题】:How to send json in HTTP request with alamofire如何使用 alamofire 在 HTTP 请求中发送 json
【发布时间】:2019-06-10 18:06:20
【问题描述】:

我还在学习 Swift 编程, 我已经使用 Alamofire 成功使用了服务,但是现在我遇到了以下问题,我有一个服务,我在 URL 中发送了 2 个 json,我真的不知道如何发送这些数据,我已经看到了一些示例,但我仍然不能理解。已经配置了安全策略但是问题是一样的

这是我的网址 {{url}}apps/Search2/{"search":"","user":14,"category":2,"numero":0,"subgroup":- 1,"tipo":-1,"subcategory":-1,"cantidad":0}/{"max":5000,"minimo":1}

这就是我一直在尝试的

static func loadMenuWithFilter(search : String, userId : Int, categoryId : Int ){
        let menu : Parameters  = ["search" : search, "user" : userId, "category" : categoryId, "numero" : 0, "subgroup" : -1, "tipo" : -1, "subcategory" : -1,"cantidad" : 0]
        Alamofire.request(AlamofireConstants.MENU_FILTER, method: .get, parameters: menu, encoding: JSONEncoding.default)
        .validate(statusCode: 200..<300).responseData { response in
            switch response.result {
            case .failure(let error):
                print("error ==> \(error)")
            case .success(let data):
                do{
                    let decoder = JSONDecoder()
                    decoder.keyDecodingStrategy = .convertFromSnakeCase
                    let result = try decoder.decode(Menu.self, from: data)
                    print("MenuController \(result)")

                } catch {
                    print("MenuController \(error)")
                }
            }
        }
    }

显然我没有成功,因为我确信这不是正确的方法。我的服务响应是 404

【问题讨论】:

标签: json swift alamofire alamofire-request


【解决方案1】:

在找了几篇帖子后,我找到了解决我问题的方法,因为我提到我需要在我的URL链中发送一个json,需要注意的是它们不是参数,直到现在我都不明白为什么我的问题被标记为重复。但解决方案是转换我的参数类型的变量菜单,将其转换为字符串,然后简单地将其与 URL 连接起来。通过此操作,服务已成功执行,无需执行我在 cmets 中指示的所有设置,也无需执行 App Transport Security 中的配置,也无需将我的变量菜单传递为 Encoding.default .这些都不起作用。

这很简单

ConvertJson.jsonToString(json: menu as AnyObject)


class func jsonToString(json: AnyObject) -> String{
        var item : String!
        do {
            let data1 =  try JSONSerialization.data(withJSONObject: json, options: JSONSerialization.WritingOptions.prettyPrinted) // first of all convert json to the data
            let convertedString = String(data: data1, encoding: String.Encoding.utf8) // the data will be converted to the string
            item = convertedString!
        } catch let myJSONError {
            print(myJSONError)
        }
        return item
    }

我从link 得到了示例代码,他们有类似的问题

【讨论】:

    【解决方案2】:

    尝试将JSONEncoding.default 更改为URLEncoding.default

    【讨论】:

      猜你喜欢
      • 2019-09-15
      • 1970-01-01
      • 2020-08-13
      • 1970-01-01
      • 1970-01-01
      • 2011-05-26
      • 1970-01-01
      • 1970-01-01
      • 2013-02-27
      相关资源
      最近更新 更多