如何使用alamofire在HTTP请求中发送json

如何使用alamofire在HTTP请求中发送json,json,swift,alamofire,alamofire-request,Json,Swift,Alamofire,Alamofire Request,我还在学习Swift的编程, 我已经成功地使用了Alamofire的服务,但现在我面临以下问题,我有一个服务,我在URL中发送了2个json,我真的不知道如何发送这些数据,我看到了一些示例,但我仍然无法理解。已配置安全策略,但问题相同 这是我的URL{{URL}}apps/Search2/{“search”:“user”:14,“category”:2,“numero”:0,“subgroup”:-1,“tipo”:-1,“subcategory”:-1,“cantidad”:0}/{“max”

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

这是我的URL{{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)")
                }
            }
        }
    }
static func loadMenuWithFilter(搜索:字符串,用户ID:Int,categoryId:Int){
let菜单:Parameters=[“search”:search,“user”:userId,“category”:categoryId,“numero”:0,“subgroup”:-1,“tipo”:-1,“subcategory”:-1,“cantidad”:0]
请求(Alamofire.request(Alamofire.MENU过滤器,方法:.get,参数:MENU,编码:JSONEncoding.default)

验证(statusCode:200..尝试将
JSONEncoding.default
更改为
URLEncoding.default

在查找了几篇帖子后,我找到了解决问题的方法,因为我提到我需要的是在我的URL链中发送一个json,应该注意的是,它们不是参数,直到现在我还不明白我的问题是什么。)标记为重复。但解决方案是将参数类型的变量菜单转换为字符串,然后简单地将其与URL连接起来。通过此操作,服务成功执行,无需执行我在注释中指示的所有设置,也无需执行应用程序T中的配置传输安全性并且不将我的可变菜单作为
编码传递。默认值
。所有这些都不起作用

这只是简单地做到了

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
    }

我从这里得到了一个示例代码,其中他们有一个类似的问题

您得到的错误是什么?这看起来不错,但实际上取决于您得到的错误是什么。因为可能有很多问题-错误的url、错误的方法(post?),参数键不正确,服务器不可用等。可能存在@onnoweb的副本,我认为这篇文章很明显。评论不允许我现在编辑它。@Lirik确实如此。我说的是在GET请求中发送正文。这是不受支持的。