我仍在学习Swift中的编程, 我已经使用Alamofire成功使用了服务,但是现在我面临以下问题,我有一个服务,该服务在URL中发送了2个json,我真的不知道如何发送此数据,我已经看到了一些示例,但是我仍然不能了解。已经配置了安全策略,但是问题是相同的
这是我的网址 {{url}} apps / Search2 / {“ search”:“”,“用户”:14,“类别”:2,“ numero”:0,“子组”:- 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
答案 0 :(得分:0)
在寻找之后,有几篇文章找到了解决我问题的方法,正如我提到的,我需要在URL链中发送一个json,应该注意的是它们不是参数,即使直到现在我仍然不明白为什么我的问题被标记为重复。但是解决方案是将我的变量菜单转换为Parameter类型,将其转换为字符串,然后简单地将其与URL连接起来。通过此操作,服务已成功执行,无需执行我在注释中指示的所有设置,也无需执行 App Transport Security 中的配置,并且无需将我的变量菜单传递为{{1 }}。这些都不起作用。
这很简单
Encoding.default
我从这个link那里得到了示例代码,他们遇到了类似的问题
答案 1 :(得分:-1)
尝试将JSONEncoding.default
更改为URLEncoding.default
吗?